COBOL+CICS文件操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COBOL+CICS文件操作
1.输入输出数据
非CICS:
ACCEPT数据来源:终端输入和系统接收。
一般系统接收数据为日期或者时间。
DA TE--YYMMDD.
DAY---YYDDD.
DAY-OF-WEEK--- PIC 9. 范围1-7.
TIME---HHMMSSHH,最后HH表示hundredths from midnigth.
如:DA TA DIVISION.
WORKING-STORAGE SECTION.
01 INPUT-DATE.
05 INPUT-YEAR PIC 99.
05 INPUT-MONTH PIC 99.
05 INPUT-DAY PIC 99.
*
PROCEDURE DIVISION.
...
ACCEPT TEST-DA TE.
DISPLAY TEST-DATE. ---终端输入的数据
ACCEPT TEST-DA TE FROM DA TE. --系统产生的数据
DISPLAY TEST-DATE. --输出
CICS下:
如:DA TA DIVISION.
WORKING-STORAGE SECTION.
01 INFLDS.
05 INLEN PIC 9(4) COMP.
01 INPUT-NAME.
05 INPUT-FIRST PIC X(10).
05 INPUT-MIDDLE PIC X(10).
05 INPUT-LAST PIC X(10).
*PROCEDURE DIVISION.
...
MOVE 15 TO INLEN.
EXEC CICS RECEIVE INTO(INPUT-NAME)
LENGTH(INLEN) --所接收的最大长度,小于为实际,大于为异常END-EXEC.
EXEC CICS SEND FROM(INPUT-NAME)
LENGTH(20) --为实际长度,并非变量。输出位置为当前光标位置END-EXEC.
...
GOBACK.
2.文件操作
普通文件非CICS:
如:ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL
SELECT CUSTOMER-FILE ASSIGN TO S-SYSIN. --定义对应到COBOL文件名SELECT PRINT-FILE ASSIGN TO S-SYSOUT.
*
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE --定义FD记录
RECORD MODE IS F.
01 CUSTOMER-RECORD.
05 CUST-NO PIC 9(5).
05 CUST-NAME PIC X(10).
FD PRINT-FILE.
RECORD MODE IS F.
LABEL RECORDS ARE OMITTED
RECORD CONTAINS 132 CHARACTERS
DATA RECORD IS PRINT-LINE. --定义数据记录在程序中的名称
01 PRINT-LINE PIC X(132).
WORKING-STORAGE SECTION.
01 EOF-FLAG PIC X V ALUE 'N'.
01 HEADING-LINE.
05 FILLER PIC X(5) V ALUE SPACES.
05 FILLER PIC X(15) V ALUE 'CUSTOMER NO'.
05 FILLER PIC X(7) V ALUE SPACE.
05 FILLER PIC X(15) V ALUE 'CUSTOMER NAME'.
05 FILLER PIC X(90).
01 OUTPUT-FILE.
05 FILLER PIC X(10) V ALUE SPACES.
05 PRT-NO PIC X(5).
05 FILLER PIC X(15) V ALUE SPACES.
05 PRT-NAME PIC X(10).
05 FILLER PIC X(92).
*
PROCEDURE DIVISION.
OPEN INPUT CUSTOMER-FILE ---OPEN语句可以指出该文件时输入还是输出文件。
OUTPUT PRINT-FILE.
也可以直接读到其他地方。
READ CUSTOMER-FILE --READ后为文件名,而WRITE为记录。
AT END MOVE 'Y' TO EOF-FLAG --AT END-读到末尾所要采取的操作。
END-READ.
MOVE HEADING-LINE TO PRINT-LINE.
WRITE PRINT-LINE.
PERFORM 100-PROCESS-RECORDS
UNTIL EOF-FLG = 'Y'
CLOSE CUSTOMER-FILE
PRINT-FILE.
STOP RUN.
100-PROCESS-RECORDS.
IF CUST-NO > 100
MOVE CUST-NO TO PRT-NO.
MOVE CUST-NAME TO PRT-NAME.
WRITE PRINT-LINE FROM OUTPUT-LINE
END-IF
READ CUSTOMER-FILE
AT END MOVE 'Y' TO EOF-FLAY
END-READ.
VSAM文件非CICS:
如:ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
* SELECT KS-FILE ASSIGN TO VKSDS
SELECT OPTIONAL MACC ASSIGN TO KSDSFILE
ORGANIZATION INDEXED --逻辑结构,通常为顺序或索引
ACCESS MODE DYNAMIC --访问方式,顺序,直接,动态(包括前面两个)RECORD KEY TEST-NO --文件中的KEY
FILE STATUS TEST-STAT. --反应读取或写入的状态
*
DATA DIVISION.
FILE SECTION.
FD KS-FILE01
LABEL RECORD IS STANDARD --指明该VSAM文件是否含有标号。
DATA RECORD IS TEST1. --定义该VSAM逻辑记录在程序中的名称。
01 TEST1.
05 TEST1-NO PIC X(5).
05 TEST1-NAME PIC X(10).
...
*
PROCEDURE DIVISION.
OPEN INPUT KS-FILE01,KS-FILE02 --只可以WRITE
I-O RR-FILE --可以REWRITE
OUTPUT ES-FILE.
READ KS-FILE01 NEXT RECORD