COBOL access record-sequential dataset sample

This is a serial code samples of how COBOL access dataset


Write Fixed-Length Record-Sequential Dataset

       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      WRITEF16.
       ENVIRONMENT      DIVISION.
       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.
         SELECT F16-FILE
            ASSIGN TO "DATA.F16"
            ORGANIZATION IS SEQUENTIAL
            ACCESS MODE IS SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
         FD  F16-FILE
             LABEL RECORD STANDARD
             DATA RECORD DATAF16-REC.
         01  DATAF16-REC.
             03 F16-S-ID    PIC X(02).
             03 F16-S-NAME  PIC X(04).
             03 F16-S-VALUE PIC X(10).

       WORKING-STORAGE SECTION.

       PROCEDURE   DIVISION.
            OPEN OUTPUT F16-FILE.

            MOVE "11" TO F16-S-ID.
            MOVE "AAAA" TO F16-S-NAME.
            MOVE "1234567890" TO F16-S-VALUE.
            WRITE DATAF16-REC.

            MOVE "22" TO F16-S-ID.
            MOVE "BBBB" TO F16-S-NAME.
            MOVE "123456789 " TO F16-S-VALUE.
            WRITE DATAF16-REC.

            MOVE "33" TO F16-S-ID.
            MOVE "CCCC" TO F16-S-NAME.
            MOVE "12345678" TO F16-S-VALUE.
            WRITE DATAF16-REC.

            CLOSE F16-FILE.

            STOP RUN.

Read Fixed-Length Record-Sequential Dataset

       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      READF16.
       ENVIRONMENT      DIVISION.
       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.
         SELECT FILE-F16 ASSIGN TO "DATA.F16"
            ORGANIZATION IS SEQUENTIAL
            ACCESS MODE IS SEQUENTIAL 
            FILE STATUS IS IO-STATUS.
       DATA DIVISION.
       FILE SECTION.
         FD  FILE-F16
             LABEL RECORD STANDARD
             DATA RECORD DATAF16-REC.
         01  DATAF16-REC.
             03 F16-S-ID    PIC X(02).
             03 F16-S-NAME  PIC X(04).
             03 F16-S-VALUE PIC X(10).

       WORKING-STORAGE SECTION.
         01  IO-STATUS PIC XX.
         01  REC-COUNT PIC 9(6).

       PROCEDURE DIVISION.

            OPEN INPUT FILE-F16.
            IF IO-STATUS NOT = "00"
                DISPLAY "OPEN INPUT FAILED"
                DISPLAY "IO-STATUS =" IO-STATUS
                GO TO FIN-REL
            END-IF.

         READ-SEQUENTIAL.
            MOVE SPACES TO DATAF16-REC.
            READ MW-ENTREE NEXT
              AT END GO TO FIN-REL
            END-READ.
            IF IO-STATUS NOT = "00"
                DISPLAY "READ RECORD FAILED"
                DISPLAY "IO-STATUS =" IO-STATUS
                GO TO FIN-REL
            END-IF.
            PERFORM DISPLAY-RECORD THRU E-DISPLAY-RECORD.
            GO TO READ-SEQUENTIAL.

         FIN-REL.
            CLOSE MW-ENTREE.
      
            EXIT PROGRAM.
            STOP RUN.

         DISPLAY-RECORD.
           DISPLAY "RECORD" ": S-ID=[" F16-S-ID "]"
                            ", S-NAME=[" F16-S-NAME "]"
                            ", S-VALUE=[" F16-S-VALUE "]".
         E-DISPLAY-RECORD.
           EXIT.


Write Variable-Length Record-Sequential Dataset

       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      WRITEV16.
       ENVIRONMENT      DIVISION.
       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.
         SELECT V16-FILE
            ASSIGN TO "DATA.V16"
            ORGANIZATION IS SEQUENTIAL
            ACCESS MODE IS SEQUENTIAL.
       DATA DIVISION.
       FILE SECTION.
         FD  V16-FILE
             LABEL RECORD STANDARD
             RECORD is VARYING in SIZE from 1 to 16
             DEPENDING ON DATAV16-REC-LEN
             DATA RECORD DATAV16-REC.
         01  DATAV16-REC.
             03 V16-S-ID    PIC X(02).
             03 V16-S-NAME  PIC X(04).
             03 V16-S-VALUE PIC X(10).

       WORKING-STORAGE SECTION.
         01  DATAV16-REC-LEN   PIC X(4) COMP-X.

       PROCEDURE   DIVISION.
            OPEN OUTPUT V16-FILE.
            MOVE "11" TO V16-S-ID.
            MOVE "AAAA" TO V16-S-NAME.
            MOVE "1234567890" TO V16-S-VALUE.
            MOVE 16  TO DATAV16-REC-LEN.
            WRITE DATAV16-REC.
            MOVE "22" TO V16-S-ID.
            MOVE "BBBB" TO V16-S-NAME.
            MOVE "123456789 " TO V16-S-VALUE.
            MOVE 16  TO DATAV16-REC-LEN.
            WRITE DATAV16-REC.
            MOVE "33" TO V16-S-ID.
            MOVE "CCCC" TO V16-S-NAME.
            MOVE "12345678" TO V16-S-VALUE.
            MOVE 14  TO DATAV16-REC-LEN.
            WRITE DATAV16-REC.

            CLOSE V16-FILE.
            STOP RUN.

Read Variable-Length Record-Sequential Dataset


       IDENTIFICATION   DIVISION.
       PROGRAM-ID.      READV16.
       ENVIRONMENT      DIVISION.
       INPUT-OUTPUT     SECTION.
       FILE-CONTROL.
         SELECT MW-ENTREE ASSIGN TO "DATA.V16"
            ORGANIZATION IS SEQUENTIAL
            ACCESS MODE IS SEQUENTIAL 
            FILE STATUS IS IO-STATUS.
       DATA DIVISION.
       FILE SECTION.
         FD  MW-ENTREE
             LABEL RECORD STANDARD
             RECORD is VARYING in SIZE from 1 to 16
             DEPENDING ON DATAV16-REC-LEN
             DATA RECORD DATAV16-REC.

         01  DATAV16-REC.
             03 V16-S-ID    PIC X(02).
             03 V16-S-NAME  PIC X(04).
             03 V16-S-VALUE PIC X(10).

       WORKING-STORAGE SECTION.
         01  DATAV16-REC-LEN   PIC X(4) COMP-X.

         01  IO-STATUS PIC XX.
         01  REC-COUNT PIC 9(6).

       PROCEDURE DIVISION.

            OPEN INPUT MW-ENTREE.
            IF IO-STATUS NOT = "00"
                DISPLAY "OPEN INPUT FAILED"
                DISPLAY "IO-STATUS =" IO-STATUS
                GO TO FIN-REL
            END-IF.

         READ-SEQUENTIAL.
            MOVE SPACES TO DATAV16-REC.
            READ MW-ENTREE NEXT
              AT END GO TO FIN-REL
            END-READ.
            IF IO-STATUS NOT = "00"
                DISPLAY "READ RECORD FAILED"
                DISPLAY "IO-STATUS =" IO-STATUS
                GO TO FIN-REL
            END-IF.
            PERFORM DISPLAY-RECORD THRU E-DISPLAY-RECORD.
            GO TO READ-SEQUENTIAL.

         FIN-REL.
            CLOSE MW-ENTREE.
      
            EXIT PROGRAM.
            STOP RUN.

         DISPLAY-RECORD.
           DISPLAY "RECORD" 
                            ": LENGTH=[" DATAV16-REC-LEN "]"
                            ", S-ID=[" V16-S-ID "]"
                            ", S-NAME=[" V16-S-NAME "]"
                            ", S-VALUE=[" V16-S-VALUE "]".
         E-DISPLAY-RECORD.
           EXIT.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值