Figures Figure 125 to Figure 128 show how in COBOL, C, C++, PL/I, and assembler language, a RETURN command is used to pass data to a new transaction.
These examples show data being returned in a COMMAREA. For
an example of a RETURN command that uses a channel to return data, see Enhanced inter-program data transfer: channels as modern-day COMMAREAs.
Invoking program
IDENTIFICATION DIVISION.
PROGRAM-ID. 'PROG1'.
.
WORKING-STORAGE SECTION.
01 TERMINAL-STORAGE.
02 FIELD PICTURE X(3).
02 DATAFLD PICTURE X(17).
.
PROCEDURE DIVISION.
MOVE 'XYZ' TO FIELD.
EXEC CICS RETURN TRANSID('TRN2')
COMMAREA(TERMINAL-STORAGE)
LENGTH(20) END-EXEC.
.
Invoked program
IDENTIFICATION DIVISION.
PROGRAM-ID. 'PROG2'
.
LINKAGE SECTION.
01 DFHCOMMAREA.
02 FIELD PICTURE X(3).
02 DATAFLD PICTURE X(17).
.
PROCEDURE DIVISION.
IF EIBCALEN GREATER ZERO
THEN
IF FIELD EQUALS 'XYZ'
MOVE 'ABC' TO FIELD.
EXEC CICS RETURN END-EXEC.
Invoking program
struct ter_struct
{
unsigned char field[3];
unsigned char datafld[17];
};
main()
{
struct ter_struct ter_stor;
memcpy(ter_stor.field,"XYZ",3);
EXEC CICS RETURN TRANSID("TRN2")
COMMAREA(&ter_stor)
LENGTH(sizeof(ter_stor));
}
Invoked program
struct term_struct
{
unsigned char field[3];
unsigned char datafld[17];
};
main()
{
struct term_struct *commarea;
EXEC CICS ADDRESS COMMAREA(commarea) EIB(dfheiptr);
if (dfheiptr->eibcalen > 0)
{
if (memcmp(commarea->field, "XYZ", 3) == 0)
memcpy(commarea->field, "ABC", 3);
}
EXEC CICS RETURN;
}
Invoking program
PROG1: PROC OPTIONS(MAIN);
DCL 1 TERM_STORAGE,
2 FIELD CHAR(3),
.
FIELD='XYZ';
EXEC CICS RETURN TRANSID('TRN2')
COMMAREA(TERM_STORAGE);
END;
Invoked program
PROG2:
PROC(TERM_STG_PTR) OPTIONS(MAIN);
DCL TERM_STG_PTR PTR;
DCL 1 TERM_STORAGE
BASED(TERM_STG_PTR),
2 FIELD CHAR(3),
.
IF EIBCALEN>0 THEN DO;
IF FIELD='XYZ' THEN FIELD='ABC';
END;
EXEC CICS RETURN;
END;
Invoking program
DFHEISTG DSECT
TERMSTG DS 0CL20
FIELD DS CL3
DATAFLD DS CL17
·
·
·
PROG1 CSECT
·
·
·
MVC FIELD,=C'ABC'
EXEC CICS RETURN
TRANSID('TRN2')
COMMAREA(TERMSTG)
·
·
·
END
Invoked program
TERMSTG DSECT
FIELD DS CL3
DATAFLD DS CL17
·
·
·
PROG2 CSECT
·
·
·
CLC EIBCALEN,=H'0'
BNH LABEL2
L COMPTR,DFHEICAP
USING TERMSTG,COMPTR
CLC FIELD,=C'XYZ'
BNE LABEL1
MVC FIELD,=C'ABC'
LABEL1 DS 0H
·
·
·
LABEL2 DS 0H
·
·
·
END