这是CICS COBOL程序:-
IDENTIFICATION DIVISION.
PROGRAM-ID. ELECPRG.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INFL ASSIGN TO INFLDD
ORGANIZATION IS LINE SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD INFL.
01 ELEC-REC.
05 P-NUM PIC X(5).
05 FILLER PIC X(1).
05 C-NAME PIC X(10).
05 FILLER PIC X(1).
05 C-UNIT PIC X(4).
WORKING-STORAGE SECTION.
COPY ELECMAP.
01 WS-MSG PIC X(20) VALUE 'BILL PROD DB UPDATE'.
01 FS PIC 9(2).
PROCEDURE DIVISION.
000-MAIN.
MOVE LOW-VALUES TO ELBILLI, ELBILLO
PERFORM 100-SEND-MAP.
PERFORM 200-RECEIVE-MAP.
PERFORM PROCESS-DATA.
PERFORM FILE-FUNC.
PERFORM 100-SEND-MAP.
PERFORM 300-RETURN.
STOP RUN.
100-SEND-MAP.
EXEC CICS
SEND
MAP('ELBILL') MAPSET('ELECMAP')
ERASE
END-EXEC.
200-RECEIVE-MAP.
EXEC CICS
RECEIVE
MAP('ELBILL') MAPSET('ELECMAP')
END-EXEC.
PROCESS-DATA.
MOVE CUSNOI TO CUSNOO.
MOVE NAMEI TO NAMEO.
MOVE UNITSI TO UNITSO.
MOVE UNITSI TO BILLO.
MOVE WS-MSG TO MSGO.
FILE-FUNC.
OPEN OUTPUT INFL.
DISPLAY 'OPEN FILE STATUS IS' FS.
MOVE CUSNOI TO P-NUM.
MOVE NAMEI TO C-NAME.
MOVE UNITSI TO C-UNIT.
WRITE ELEC-REC.
DISPLAY 'WRITE FILE STATUS IS' FS.
CLOSE INFL.
DISPLAY 'CLOSE FILE STATUS IS' FS.
300-RETURN.
EXEC CICS
RETURN
END-EXEC.
Mine编译jcl:-
//CICSCOB JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID,MSGLEVEL=(1,1)
//PROCLIB JCLLIB ORDER=DFH320.CICS.SDFHPROC
//STEP01 EXEC PROC=DFHYITVL,
// INDEX='DFH320.CICS',
// AD370HLQ='IGY410',
// LE370HLQ='CEE',
// PROGLIB='DFH320.CICS.SDFHLOAD',
// DSCTLIB='DFH320.CICS.SDFHMAC'
//TRN.SYSIN DD DISP=SHR,DSN=RAHUL.COBOL.PROGRAM(ELECPRG)
//INFLDD DD DSN=RAHUL.CICS.OUTPUT,DISP=SHR
//LKED.SYSIN DD *
NAME ELECPRG(R)
/*
编译完成一个条件代码=0004,很少有警告。但是,当我在CICS中执行事务时,它终止于CICS transaction ELEC失败,异常终止U4038。
我不明白这个问题的本质。我只想从CICS屏幕输入更新数据集RAHUL.CICS.OUTPUT。提供了输出文件位置。如果没有文件使用程序运行良好,就不会发生异常终止。
此程序是COBOL文件控制命令和CICS SEND/RECEIVE MAP命令的组合。CICS事务中不支持诸如OPEN、READ、WRITE和CLOSE之类的COBOL文件命令。在CICS程序中,您必须使用本文所述的CICS APIhttps://www.ibm.com/docs/en/cics-ts/5.5?topic=programs-理解文件控制