加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

COBOL 文件处理动词如何使用

发布时间:2023-09-14 13:09:48 所属栏目:教程 来源:
导读:文件处理动词用于对文件执行各种操作.以下是文件处理动词 :
Open
Read
Write

打开动词
打开是必须执行的第一个文件操作.如果Open成功,则只能对文件进行进一步操作.只有在打开文件后,文件结构中的变量才可用
文件处理动词用于对文件执行各种操作.以下是文件处理动词 :
Open
Read
Write

打开动词
打开是必须执行的第一个文件操作.如果Open成功,则只能对文件进行进一步操作.只有在打开文件后,文件结构中的变量才可用于处理.每次文件操作后都会更新 FILE STATUS 变量.
 
打开"模式"文件名.
这里,文件名是字符串文字,您将用它来命名文件.可以在以下模式中打开文件 :

Sr.No.    模式&描述
1    
Input

输入模式用于现有文件.在这种模式下,我们只能读取文件,文件上不允许其他操作.

2    
Output

输出模式用于在文件中插入记录.如果使用顺序文件并且文件保留了一些记录,则将首先删除现有记录,然后在文件中插入新记录.如果索引文件或相对文件,则不会发生这种情况.

3    
Extend

扩展模式用于在顺序文件中追加记录.在此模式下,最后会插入记录.如果文件访问模式为随机或动态,则无法使用扩展模式.

4    
IO

输入输出模式用于读取和重写文件的记录.

读取动词
读取动词用于读取文件记录. read的功能是从文件中获取记录.在每个读动词中,只能将一个记录读入文件结构.要执行读取操作,请在INPUT或I-O模式下打开文件.在每个读取语句中,文件指针递增,因此读取连续记录.

以下是读取记录时的语法文件访问模式是顺序 :

READ file-name NEXT RECORD INTO ws-file-structure
   AT END disPLAY 'End of File'
   NOT AT END disPLAY 'Record Details:' ws-file-structure
END-READ.
以下是使用的参数 :

NEXT RECORD是可选的,在顺序读取索引顺序文件时指定.
INTO子句是可选的. ws-file-structure在WorkingStorage部分中定义,以从READ语句中获取值.
当到达文件末尾时,AT END条件变为True .
示例 : 以下示例使用行顺序组织读取现有文件.该程序可以使用 Live Demo 选项进行编译和执行,它将显示文件中的所有记录.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
 
ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
      FILE-CONTROL.
      SELECT STUDENT ASSIGN TO 'input.txt'
      ORGANIZATION IS LINE SEQUENTIAL.            
 
DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
 
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
   01 WS-EOF PIC A(1). 
 
PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      PERFORM UNTIL WS-EOF='Y'
         READ STUDENT INTO WS-STUDENT
            AT END MOVE 'Y' TO WS-EOF
            NOT AT END disPLAY WS-STUDENT
         END-READ
      END-PERFORM.
   CLOSE STUDENT.
STOP RUN.

让我们假设大型机上的文件与上面例子中的input.txt文件具有相同的内容.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
 
ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO IN1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.
 
DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
      01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
     
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
 
PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      MOVE 20005 TO STUDENT-ID.
      
      READ STUDENT RECORD INTO WS-STUDENT-FILE
         KEY IS STUDENT-ID
         INVALID KEY disPLAY 'Invalid Key'
         NOT INVALID KEY disPLAY WS-STUDENT-FILE
      END-READ.
      
   CLOSE STUDENT.
STOP RUN.
JCL 执行上述COBOL程序 :
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC pgm = HELLO
//IN1 DD DSN = STUDENT-FILE-NAME,disP=SHR

编译并执行上述程序时,它会产生以下结果 :
20005 Amitabh Bachhan

写动词
写动词用于在a中插入记录文件.写入记录后,记录缓冲区中不再可用.在将记录插入文件之前,将值移动到记录缓冲区然后执行write动词.

Write语句可以与 FROM 选项一起使用来直接写入记录来自工作存储变量. From是一个可选条款.如果访问模式是顺序的,那么要写入记录,文件必须在输出模式或扩展模式下打开.如果访问模式是随机的或动态的,那么要写入记录,文件必须在输出模式或IO模式下打开.

语法
关注是文件组织顺序&减去时读取记录的语法;

WRITE record-buffer [FROM ws-file-structure]
END-WRITE.
以下是在索引文件组织或相对&减去时读取记录的语法;

WRITE record-buffer [FROM ws-file-structure]
   INVALID KEY disPLAY 'Invalid Key'
   NOT INVALID KEY disPLAY 'Record Inserted'
END-WRITE.
示例 : 以下示例显示了在组织顺序时如何在新文件中插入新记录.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
 
ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO OUT1
      ORGANIZATION IS SEQUENTIAL
      ACCESS IS SEQUENTIAL
      FILE STATUS IS FS.
 
DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
      05 CLASS PIC X(3).
 
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).
 
PROCEDURE DIVISION.
   OPEN EXTEND STUDENT.
      MOVE 1000 TO STUDENT-ID.
      MOVE 'Tim' TO NAME.
      MOVE '10' TO CLASS.
      WRITE STUDENT-FILE
      END-WRITE.    
   CLOSE STUDENT.
STOP RUN.
JCL 执行上述COBOL程序 :

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC pgm = HELLO
//OUT1 DD DSN = OUTPUT-FILE-NAME,disP = (NEW,CATALOG,DELETE)
编译并执行上述程序时,它会在输出文件中添加一条新记录.
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章