OliverXQ
作者OliverXQ2022-03-18 11:40
浪潮商用机器有限公司, 浪潮商用机器企业云创新中心

用ILE C语言将数据写入AS/400集成文件系统root(/)

字数 2476阅读 1911评论 0赞 2

AS/400 自身的文件系统是 QSYS.LIB library ,为了与其他异构平台相兼容,引入集成文件系统( Integrated File System , IFS ) 的概念。

下图截取自“ Navigator for i ”。


从中可以看到, AS/400 除了支持自身的 Library(QSYS.LIB) 以外,还支持另外六种文件系统以支持相应的文件系统,体现了 AS/400 具有平台的开放性和兼容性。

The File Server (QFileSvr.400) file system

由于工作的需要,有些客户要用手动的方法将数据从 QSYS.LIB 复制到其他文件系统,不是很方便快捷。下面通过一个 ILE C 程序,简单地介绍将数据从 AS/400 自身的 QSYS.LIB 文件系统写入到集成文件系统 root ( / ) 中文本文件的方法。

/*----------------------------------------------------------------*/
/*   Write data from AS/400 to  file in IFS (root /)    */
/*   C LANGUAGE                                                  */
/*                                                                            */
/*  EDITED BY XIAO QING ,2022/3                       */
/*----------------------------------------------------------------*/
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
 
#define BUF_SIZE 256
 
#define TRUE         0
#define FALSE       -1
 
void main(void){
   char dir[] = "/XIAOQING/HOME.TXT";
   int fd = FALSE;
   int rc = FALSE;
   char buff[BUF_SIZE];
   long len;
 
   memset(buff, 0, sizeof(buff));
   strcpy(buff, "This is a test.");
   len = strlen(buff);
/***************************************************/
/*  First create the file.                                    */
/***************************************************/
   if((fd = open(dir, O_WRONLY | O_CREAT | O_TRUNC))== -1)
   {
      printf("%s can't be created. \n",dir);
      getchar();
      return;
   }
 
  /***************************************************/
  /*  Write data to IFS file                                  */
  /***************************************************/
   if ((rc = write(fd, buff, len))==-1)
   {
      printf("%s Write failed");
      getchar();
      return;
   }
 
  /***************************************************/
  /*  Close the IFS                                            */
  /***************************************************/
   if ((rc = close(fd)<0))
   {
    printf("%s Close failed");
    getchar();
    return;
   }
}

这个程序用到了 open 函数,用它打开集成文件系统 root 中某个文件 ( /XIAOQING/HOME.TXT ) ,它需要引用头文件,即 include <fcntl.h> ,另外需要注意的是 open 函数中的参数” O_WRONLY | O_CREAT | O_TRUNC “的用法,组合在一起的含义是以只读的方式打开文件,如果这个文件不存在就创建一个新文件;如果路径不存在,会报错;如果这个文件已存在,将这个文件的内容清空,然后,用 write 函数将数据写入 /XIAOQING/HOME.TXT ,最后,关闭这个文件。

当然也可以用 read 函数从文本文件读取数据,就不具体介绍了。

编译之后执行。

程序被执行之后,会在目录“ /XIAOQING ”目录生成“ HOME.TXT" 文件,然后打开这个文件,就可以看到数据“ This is a test.” 已被写入。

https://www.ibm.com/docs/en/i/7.2

仅供参考

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表