精通COBOL--16.7.1 读取文件

  CICS所支持的VSAM文件主要有KSDSESDSRRDS。此外,文件在CICS中由FCTFile Control Table)所统一管理。因此,在相应的COBOL程序中不用手工定义和打开文件。假设某一文件的文件名为“TESTF”,则在程序中通过CICS读取该文件的代码通常如下:

IDENTIFICATION  DIVISION.

PROGRAM-ID.  FREADPG.                               

*

 ENVIRONMENT  DIVISION.

*

 DATA  DIVISION.

 WORKING-STORAGE  SECTION.

 01  FILE-AREA.

     05  RECL     PIC  S9(4)  COMP.

     05  RECKEY  PIC  X(6).

 01  REC-FIELD.

     05   F-CODE    PIC X(10)  VALUE  SPACES.            

     05   F-SBA      PIC X(3)   VALUE  SPACES.           

     05   F-NAME    PIC X(20)  VALUE  SPACES.         

     05   F-NOTUSE  PIC X(47)   VALUE  SPACES. 

 ……

*

 PROCEDURE  DIVISION.

   ……

   MOVE  80  TO  RECL.

   MOVE  value   TO  RECKEY.

   EXEC  CICS  READ  FILE(‘TESTF’)

                         INTO(REC-FIELD)

                         RIDFLD(RECKEY)

                         LENGTH(RECL)

                         END-EXEC.

   ……

以上代码中,RECL变量保存文件中逻辑记录的长度,RECKEY则保存所要读取记录的关键字。对于KSDSRECKEY为该记录的KEY;对于ESDSRECKEY为该记录的RBA;对于RRDSRECKEY为该记录的RRN

此外,CICS还可对文件进行连续读取,相对于对文件进行浏览。对文件进行浏览的部分程序代码如下:

IDENTIFICATION  DIVISION.

PROGRAM-ID.  FBROWSEPG.                                 

*

 ENVIRONMENT  DIVISION.

*

 DATA  DIVISION.

 WORKING-STORAGE  SECTION.

 ……

*

 PROCEDURE  DIVISION.

   ……

   EXEC  CICS  STARTBR  FILE(‘TESTF’)

                             RIDFLD(RECKEY)

                             RESP(ERR-CODE)

                             END-EXEC.

   IF  ERR-CODE  EQUAL  DFHRESP(NORMAL)

         PERFORM  UNTIL  ERR-CODE  EQUAL  DFHRESP(ENDFILE)

             EXEC  CICS  READNEXT  FILE(‘TESTF’)

                                        INTO(REC-FIELD)

                                        LENGTH(RECL)

                                        RIDFLD(RECKEY)

                                        RESP(ERR-CODE)

                                        END-EXEC

             ……

         END-PERFORM

         EXEC  CICS  ENDBR  FILE(‘TESTF’)  END-EXEC

    ……

你可能感兴趣的:(精通COBOL--16.7.1 读取文件)