IBM AIX文件访问COBOL

问题描述 投票:1回答:1

我们正在将一堆COBOL程序从z / OS迁移到AIX7。我们正在AIX上使用IBM COBOL Compiler(5.1)。现在,我不了解AIX上COBOL的文件访问和文件系统如何工作。COBOL代码直接使用

SELECT  :FILE:    ASSIGN       TO  :FILE:
                              ORGANIZATION IS  SEQUENTIAL
                              ACCESS  MODE IS  SEQUENTIAL
                              STATUS       IS  S-STATUS.

然后执行OPEN INPUT

此在AIX上编译良好:

PP 5724-Z87 IBM COBOL for AIX  5.1.0 in progress ...
LineID  Message code  Message text
    91  IGYGR1216-I   A "RECORDING MODE" of "F" was assumed for file           
                      "CUSTOMERS".                                              
    94  IGYGR1216-I   A "RECORDING MODE" of "F" was assumed for file           
                      "LIST1".                                              
    97  IGYGR1216-I   A "RECORDING MODE" of "F" was assumed for file "UINPUT". 
Messages    Total    Informational    Warning    Error    Severe    Terminating
Printed:       3           3                                               
End of compilation 1,  program xxxxx,  highest severity: Informational.

现在的问题是,在运行程序时找不到该文件。它给出了状态码:37

我知道我必须为shell(ksh)上的文件提供一个文件系统,例如:export CUSTOMERS="STL-CUSTOMERS"。该文件与程序位于同一目录中。

我的问题是:使用哪个文件系统?我尝试了“ STL”,它对我来说就像是“标准” AIX文件系统(即JFS2)。但这是行不通的。另一个选项是(来自AIX编程指南5.1上的COBOL):

  • DB2
  • SdU(SMARTdata实用程序)
  • SFS(Encina结构化文件服务器)
  • STL(标准语言)
  • QSAM(排队顺序访问方法)
  • RSD(记录顺序定界)

我们尝试了所有,起作用的文件系统是“ QSAM”。该文件是从大型机传输来的文本文件(ASCII)。但不是直接复制,而是先由FTP复制,然后在Windows上转换为ASCII(我们必须修复换行符)。为了使其正常工作,我们使用vi编辑了文件,使每行80个字符。因此它在AIX上进行了编辑,看起来像AIX上的普通文本文件。为什么COBOL仍希望QSAM作为“文件系统”? “文件系统”一词在这里意味着什么?似乎这不是真正的文件系统(例如JFS)的意义。

file access aix cobol
1个回答
0
投票

我知道这在哪里会令人困惑……尤其是来自非POSIX环境。

我将从答案开始,然后提供更多信息。

对于普通的文本文件,您需要RSD,并确保\ n为第81列。记录长度80是数据部分,不包括定界符。QSAM(固定长度)似乎可以工作,但会将\ n作为数据的一部分返回!通过文件系统,我们指的是数据如何物理存储在磁盘,SSD,RAM等上。

文件系统有两种基本类型:

  • 本机(在JFS2,JFS,NFS,CIFS等之上)RSD,QSAM,LSQ,STL,SdU。这些文件系统可以通过标准OS实用程序进行操作

  • 非本机(在另一种产品之上)DB2(DB2)和SFS(TxSeries / CICS)。这些文件系统对于标准OS实用程序是不可见的
  • 然后,按COBOL组织类型进行分组(

    首选

    顺序:所有文件系统都支持顺序... z / OS:QSAM,VSAM
  • 相对:
  • STL
  • ,SdU,SFS,DB2 ........... z / OS:VSAM
索引:
  • STL
  • ,SdU,SFS,DB2 ........... z / OS:VSAM
    在本机文件系统中,QSAM(变量),STL和SDU包含元数据,这使得它们在vi,cat中不是真正可见的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    QSAM

    是z / OS的忠实实现:
      固定长度记录:原始数据,没有行定界符(\ n)。
    • 可变长度记录:RDW +原始数据(无\ n)...但是没有BDW。
    • RSD

    是普通的流(文本)文件;每条记录都以\ n终止,该长度在记录长度中计为not(程序将永远不会看到它们)。

    LSQ

    (行顺序)与z / OS上相同-混乱的语义。

    VSAM

    是文件系统的别名,该文件系统提供z / OS VSAM的所有功能。不幸的是,由于历史原因,它指向SdU ...

    STL

    在所有方面都比SdU更好。
    SdU是第一个涵盖QSAM和VSAM的文件系统,但与STL相比,它已经老旧且不实用。
    © www.soinside.com 2019 - 2024. All rights reserved.