DSN8CC0
THIS MODULE ISSUES CICS® RECEIVE MAP TO RETRIEVE INPUT, CALLS DSN8CC1, AND ISSUE CICS SEND MAP AFTER RETURNING.
IDENTIFICATION DIVISION.
*------------------------
PROGRAM-ID. DSN8CC0.
**** DSN8CC0 - SUBSYSTEM INTERFACE MODULE FOR CICS/VS - COBOL ***
*
* MODULE NAME = DSN8CC0
*
* DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION
* SUBSYSTEM INTERFACE MODULE
* CICS
* COBOL
*
*Licensed Materials - Property of IBM
*5605-DB2
*(C) COPYRIGHT 1982, 2010 IBM Corp. All Rights Reserved.
*
*STATUS = Version 10
*
* FUNCTION = THIS MODULE ISSUES CICS RECEIVE MAP TO RETRIEVE
* INPUT, CALLS DSN8CC1, AND ISSUE CICS SEND MAP
* AFTER RETURNING.
*
* NOTES =
* 1. THIS IS A CICS PSEUDO CONVERSATION PROGRAM WHICH
* INITIALIZES ITSELF WHEN A TERMINAL OPERATOR ENTERS
* INPUT AFTER VIEWING THE SCREEN SENT BY PREVIOUS
* ITERATIONS OF THE PROGRAM.
*
* DEPENDENCIES = TWO CICS MAPS(DSECTS) ARE REQUIRED:
* DSN8MCMG AND DSN8MCMD
* MODULE DSN8CC1 IS REQUIRED.
* DCLGEN STRUCTURE DSN8MCCS IS REQUIRED
* INCLUDED COBOL STRUCTURE DSN8MCCA IS
* REQUIRED.
*
* RESTRICTIONS = NONE
*
*
* MODULE TYPE =
* PROCESSOR = DB2 PRECOMPILER,CICS TRANSLATOR,COBOL COMPIL
* MODULE SIZE = SEE LINK-EDIT
* ATTRIBUTES = REUSABLE
*
* ENTRY POINT = DSN8CC0
* PURPOSE = SEE FUNCTION
* LINKAGE = CICS/OS/VS ENTRY
*
* INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION:
*
* SYMBOLIC LABEL/NAME = DSN8CCGI
* DESCRIPTION = CICS/OS/VS BMS MAP FOR GENERAL INPUT
*
* SYMBOLIC LABEL/NAME = DSN8CCDI
* DESCRIPTION = CICS/OS/VS BMS MAP FOR DETAIL INPUT
*
* OUTPUT = PARAMETERS EXPLICITLY RETURNED:
*
* SYMBOLIC LABEL/NAME = DSN8CCGO
* DESCRIPTION = CICS/OS/VS BMS MAP FOR GENERAL OUTPUT
*
* SYMBOLIC LABEL/NAME = DSN8CCDO
* DESCRIPTION = CICS/OS/VS BMS MAP FOR DETAIL OUTPUT
*
*
* EXIT-NORMAL = CICS RETURN TRANSID
*
* EXIT-ERROR = SQL ERROR FOR SQL ERRORS
* CICS ABEND FOR CICS PROBLEMS
*
* RETURN CODE = NONE
*
* ABEND CODES = LSCR - LOGICAL SCREEN SET INCORRECTLY
*
* ERROR-MESSAGES = NONE
*
*
* EXTERNAL REFERENCES = COMMON CICS REQUIREMENTS
* ROUTINES/SERVICES =
* CICS/VS SERVICES
* DSN8CC1 - SQL 1 MAINLINE CODE
*
* DATA-AREAS =
* DSN8MCCA - PARAMETER TO BE PASSED TO DSN8CC1
* COMMON AREA
* DSN8MCCS - DECLARE CONVERSATION STATUS
* DSN8MCC2 - COMMON AREA PART 2
* DSN8MCMD - CICS/OS/VS COBOL MAP, ORGANIZATION
* DSN8MCMG - CICS/OS/VS COBOL MAP, ORGANIZATION
*
* CONTROL-BLOCKS =
* SQLCA - SQL COMMUNICATION AREA
*
* TABLES = NONE
*
* CHANGE-ACTIVITY =
* - 10/18/2005 PK03311 INITIALIZE UNINITIALIZED STORAGE @01
*
* *PSEUDOCODE*
*
* PROCEDURE
* DECLARATIONS.
* ALLOCATE COBOL WORK AREA FOR COMMAREA.
* PUT MODULE NAME 'DSN8CC0' IN AREA USED BY ERROR-HANDLER.
* PUT CICS EIBTRMID IN PCONVSTA.CONVID TO BE PASSED TO
* DSN8CC1.
* RETRIEVE LASTCR FROM VCONA USING THE CONVID TO DETERMINE
* WHICH OF THE TWO BMS MAPS SHOULD BE USED TO MAP IN DATA.
*
*
* IF RETRIEVAL OF MAPS IS SUCCESSFUL, THEN DO;
* EXEC CICS RECEIVE MAP ACCORDING TO SPECIFIED LASTSCR
*
* IF MAPFAIL CONDITION IS RAISED* THEN DO;
* COMPARM.PFKIN = '00'
* GO TO CC0SEND
* END
*
* ELSE
* PUT DATA FROM MAP INTO COMPARM **
*
* ELSE
* IT IS A NEW CONVERSATION
* AND NO EXEC CICS RECEIVE MAP IS ISSUED.
*
* CC0SEND:
* EXEC CICS LINK PROGRAM('DSN8CC1') COMMAREA(COMMAREA).
* UPON RETURN FROM DSN8CC1, EXEC CICS SEND MAP ACCORDING TO
* THE TYPE SPECIFIED IN PCONVSTA.LASTSCR.
* EXEC CICS RETURN TRANSID(D8CS).
*
* END.
*
* * I.E. LAST CONVERSATION EXISTS, BUT OPERATOR HAD ENTERED
* DATA FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON A
* FORMATTED SCREEN AND PRESSED ENTER
*
* ** COMPARM.PFKIN = PF KEY ACTUALLY USED I.E. '01' FOR
* PF1 ..
*---------------------------------------------------------------**
ENVIRONMENT DIVISION.
*---------------------
DATA DIVISION.
*--------------
WORKING-STORAGE SECTION.
77 FOUND PIC S99.
EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE DSN8MCC2 END-EXEC.
01 COMMAREA.
EXEC SQL INCLUDE DSN8MCCA END-EXEC.
EXEC SQL INCLUDE DSN8MCCS END-EXEC.
EXEC SQL INCLUDE DSN8MCMG END-EXEC.
EXEC SQL INCLUDE DSN8MCMD END-EXEC.
*****************************************************************-
* MAPD REDEFINES THE COBOL STRUCTURE ASSOCIATED WITH THE
* CICS MAP DSN8CCD.
*****************************************************************-
01 MAPD REDEFINES DSN8CCDI.
02 FILLER PIC X(387).
02 SUBMAP OCCURS 15 TIMES.
03 COL1LEN PIC S9(4) COMP.
03 COL1ATTR PIC X(1).
03 COL1DATA PIC X(37).
03 COL2LEN PIC S9(4) COMP.
03 COL2ATTR PIC X(1).
03 COL2DATA PIC X(40).
*****************************************************************-
* PFKEYS IS AN ARRAY OF 24 ELEMENTS REPRESENTING THE DIFFERENT
* PFKEYS AS THEY WOULD BE REPRESENTED IN EIBAID.
*****************************************************************-
01 PFKEYS-DUMB.
02 PFKEYS-ALL PIC X(24) VALUE '123456789:#@ABCDEFGHI>.<'.
02 PFKEYS REDEFINES PFKEYS-ALL PIC X(1) OCCURS 24 TIMES.
*****************************************************************-
* PFK IS AN ARRAY OF 12 TWO-BYTE CHARS REPRESENTING THE PFKEYS
* ALLOWED AS INPUT TO DSN8CC1 AND DSN8CC2 ETC.
*****************************************************************-
01 PFK-DUMB.
02 PFK-ALL PIC X(24) VALUE '010203040506070809101112'.
02 PFK REDEFINES PFK-ALL PIC X(2) OCCURS 12 TIMES.
PROCEDURE DIVISION.
*------------------
*****************************************************************-
* SQL RETURN CODE HANDLING
*****************************************************************-
EXEC SQL WHENEVER SQLERROR GO TO DB-ERROR END-EXEC
EXEC SQL WHENEVER SQLWARNING GO TO DB-ERROR END-EXEC.
*****************************************************************-
* ALLOCATE COBOL WORK AREA / INITIALIZE VARIABLES
*****************************************************************-
* INIT AREA INCLUDED BY DSN8MCCA
MOVE SPACES TO COMMAREA.
* INIT AREA INCLUDED BY DSN8MCCS @01
MOVE SPACES TO PCONA.
* INIT AREA INCLUDED BY DSN8MCMG @01
MOVE ZEROES TO ATITLEL OF DSN8CCGI.
MOVE SPACES TO ATITLEI OF DSN8CCGI.
MOVE ZEROES TO AMAJSYSL OF DSN8CCGI.
MOVE SPACES TO AMAJSYSI OF DSN8CCGI.
MOVE ZEROES TO AACTIONL OF DSN8CCGI.
MOVE SPACES TO AACTIONI OF DSN8CCGI.
MOVE ZEROES TO ADESCL2L OF DSN8CCGI.
MOVE SPACES TO ADESCL2I OF DSN8CCGI.
MOVE ZEROES TO AOBJECTL OF DSN8CCGI.
MOVE SPACES TO AOBJECTI OF DSN8CCGI.
MOVE ZEROES TO ADESCL3L OF DSN8CCGI.
MOVE SPACES TO ADESCL3I OF DSN8CCGI.
MOVE ZEROES TO ASEARCHL OF DSN8CCGI.
MOVE SPACES TO ASEARCHI OF DSN8CCGI.
MOVE ZEROES TO ADESCL4L OF DSN8CCGI.
MOVE SPACES TO ADESCL4I OF DSN8CCGI.
MOVE ZEROES TO ADATAL OF DSN8CCGI.
MOVE SPACES TO ADATAI OF DSN8CCGI.
MOVE ZEROES TO AMSGL OF DSN8CCGI.
MOVE SPACES TO AMSGI OF DSN8CCGI.
MOVE ZEROES TO ALINEL(1).
MOVE SPACES TO ALINEI(1).
MOVE ZEROES TO ALINEL(2).
MOVE SPACES TO ALINEI(2).
MOVE ZEROES TO ALINEL(3).
MOVE SPACES TO ALINEI(3).
MOVE ZEROES TO ALINEL(4).
MOVE SPACES TO ALINEI(4).
MOVE ZEROES TO ALINEL(5).
MOVE SPACES TO ALINEI(5).
MOVE ZEROES TO ALINEL(6).
MOVE SPACES TO ALINEI(6).
MOVE ZEROES TO ALINEL(7).
MOVE SPACES TO ALINEI(7).
MOVE ZEROES TO ALINEL(8).
MOVE SPACES TO ALINEI(8).
MOVE ZEROES TO ALINEL(9).
MOVE SPACES TO ALINEI(9).
MOVE ZEROES TO ALINEL(10).
MOVE SPACES TO ALINEI(10).
MOVE ZEROES TO ALINEL(11).
MOVE SPACES TO ALINEI(11).
MOVE ZEROES TO ALINEL(12).
MOVE SPACES TO ALINEI(12).
MOVE ZEROES TO ALINEL(13).
MOVE SPACES TO ALINEI(13).
MOVE ZEROES TO ALINEL(14).
MOVE SPACES TO ALINEI(14).
MOVE ZEROES TO ALINEL(15).
MOVE SPACES TO ALINEI(15).
MOVE ZEROES TO APFKEYL OF DSN8CCGI.
MOVE SPACES TO APFKEYI OF DSN8CCGI.
* INIT AREA INCLUDED BY DSN8MCMD @01
MOVE ZEROES TO BTITLEL OF DSN8CCDI.
MOVE SPACES TO BTITLEI OF DSN8CCDI.
MOVE ZEROES TO BMAJSYSL OF DSN8CCDI.
MOVE SPACES TO BMAJSYSI OF DSN8CCDI.
MOVE ZEROES TO BACTIONL OF DSN8CCDI.
MOVE SPACES TO BACTIONI OF DSN8CCDI.
MOVE ZEROES TO BDESCL2L OF DSN8CCDI.
MOVE SPACES TO BDESCL2I OF DSN8CCDI.
MOVE ZEROES TO BOBJECTL OF DSN8CCDI.
MOVE SPACES TO BOBJECTI OF DSN8CCDI.
MOVE ZEROES TO BDESCL3L OF DSN8CCDI.
MOVE SPACES TO BDESCL3I OF DSN8CCDI.
MOVE ZEROES TO BSEARCHL OF DSN8CCDI.
MOVE SPACES TO BSEARCHI OF DSN8CCDI.
MOVE ZEROES TO BDESCL4L OF DSN8CCDI.
MOVE SPACES TO BDESCL4I OF DSN8CCDI.
MOVE ZEROES TO BDATAL OF DSN8CCDI.
MOVE SPACES TO BDATAI OF DSN8CCDI.
MOVE ZEROES TO BMSGL OF DSN8CCDI.
MOVE SPACES TO BMSGI OF DSN8CCDI.
MOVE ZEROES TO LINE1F1L OF DSN8CCDI.
MOVE SPACES TO LINE1F1I OF DSN8CCDI.
MOVE ZEROES TO LINE1F2L OF DSN8CCDI.
MOVE SPACES TO LINE1F2I OF DSN8CCDI.
MOVE ZEROES TO LINE2F1L OF DSN8CCDI.
MOVE SPACES TO LINE2F1I OF DSN8CCDI.
MOVE ZEROES TO LINE2F2L OF DSN8CCDI.
MOVE SPACES TO LINE2F2I OF DSN8CCDI.
MOVE ZEROES TO LINE3F1L OF DSN8CCDI.
MOVE SPACES TO LINE3F1I OF DSN8CCDI.
MOVE ZEROES TO LINE3F2L OF DSN8CCDI.
MOVE SPACES TO LINE3F2I OF DSN8CCDI.
MOVE ZEROES TO LINE4F1L OF DSN8CCDI.
MOVE SPACES TO LINE4F1I OF DSN8CCDI.
MOVE ZEROES TO LINE4F2L OF DSN8CCDI.
MOVE SPACES TO LINE4F2I OF DSN8CCDI.
MOVE ZEROES TO LINE5F1L OF DSN8CCDI.
MOVE SPACES TO LINE5F1I OF DSN8CCDI.
MOVE ZEROES TO LINE5F2L OF DSN8CCDI.
MOVE SPACES TO LINE5F2I OF DSN8CCDI.
MOVE ZEROES TO LINE6F1L OF DSN8CCDI.
MOVE SPACES TO LINE6F1I OF DSN8CCDI.
MOVE ZEROES TO LINE6F2L OF DSN8CCDI.
MOVE SPACES TO LINE6F2I OF DSN8CCDI.
MOVE ZEROES TO LINE7F1L OF DSN8CCDI.
MOVE SPACES TO LINE7F1I OF DSN8CCDI.
MOVE ZEROES TO LINE7F2L OF DSN8CCDI.
MOVE SPACES TO LINE7F2I OF DSN8CCDI.
MOVE ZEROES TO LINE8F1L OF DSN8CCDI.
MOVE SPACES TO LINE8F1I OF DSN8CCDI.
MOVE ZEROES TO LINE8F2L OF DSN8CCDI.
MOVE SPACES TO LINE8F2I OF DSN8CCDI.
MOVE ZEROES TO LINE9F1L OF DSN8CCDI.
MOVE SPACES TO LINE9F1I OF DSN8CCDI.
MOVE ZEROES TO LINE9F2L OF DSN8CCDI.
MOVE SPACES TO LINE9F2I OF DSN8CCDI.
MOVE ZEROES TO LINEAF1L OF DSN8CCDI.
MOVE SPACES TO LINEAF1I OF DSN8CCDI.
MOVE ZEROES TO LINEAF2L OF DSN8CCDI.
MOVE SPACES TO LINEAF2I OF DSN8CCDI.
MOVE ZEROES TO LINEBF1L OF DSN8CCDI.
MOVE SPACES TO LINEBF1I OF DSN8CCDI.
MOVE ZEROES TO LINEBF2L OF DSN8CCDI.
MOVE SPACES TO LINEBF2I OF DSN8CCDI.
MOVE ZEROES TO LINECF1L OF DSN8CCDI.
MOVE SPACES TO LINECF1I OF DSN8CCDI.
MOVE ZEROES TO LINECF2L OF DSN8CCDI.
MOVE SPACES TO LINECF2I OF DSN8CCDI.
MOVE ZEROES TO LINEDF1L OF DSN8CCDI.
MOVE SPACES TO LINEDF1I OF DSN8CCDI.
MOVE ZEROES TO LINEDF2L OF DSN8CCDI.
MOVE SPACES TO LINEDF2I OF DSN8CCDI.
MOVE ZEROES TO LINEEF1L OF DSN8CCDI.
MOVE SPACES TO LINEEF1I OF DSN8CCDI.
MOVE ZEROES TO LINEEF2L OF DSN8CCDI.
MOVE SPACES TO LINEEF2I OF DSN8CCDI.
MOVE ZEROES TO LINEFF1L OF DSN8CCDI.
MOVE SPACES TO LINEFF1I OF DSN8CCDI.
MOVE ZEROES TO LINEFF2L OF DSN8CCDI.
MOVE SPACES TO LINEFF2I OF DSN8CCDI.
MOVE ZEROES TO BPFKEYL OF DSN8CCDI.
MOVE SPACES TO BPFKEYI OF DSN8CCDI.
*
MOVE 'DSN8CC0' TO MAJOR IN DSN8-MODULE-NAME.
MOVE 'O' TO MAJSYS IN OUTAREA.
MOVE '0' TO EXITCODE.
MOVE EIBTRMID TO CICSID OF PCONVSTA.
MOVE CONVID OF PCONVSTA TO SAVE-CONVID.
*****************************************************************-
* TRY TO RETRIEVE LAST CONVERSATION. IF SUCCESSFUL, USE THE
* LAST SCREEN SPECIFIED TO RECEIVE INPUT FROM TERMINAL.
*****************************************************************-
EXEC SQL SELECT LASTSCR
INTO :PCONA.LASTSCR
FROM VCONA
WHERE CONVID = :SAVE-CONVID END-EXEC.
*****************************************************************-
* IF LAST CONVERSATION DOES NOT EXIST, THEN DO NOT ATTEMPT TO
* RECEIVE INPUT MAP. GO DIRECTLY TO VALIDATION MODULES
* TO GET TITLE ETC. FOR OUTPUT MAP.
*****************************************************************-
IF SQLCODE = +100 THEN
GO TO CC0SEND.
*****************************************************************-
* IF LAST CONVERSATION EXISTS, BUT OPERATOR HAS ENTERED DATA N
* FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON A FORMATTED N
* SCREEN AND PRESSED ENTER THEN ....... N
* MOVE DATA INTO CORRESPONDING FIELDS IN INAREA AND GO TO
* VALIDATION MODULES.
*****************************************************************-
EXEC CICS HANDLE CONDITION MAPFAIL (CC0SEND) END-EXEC.
IF LASTSCR OF PCONA NOT = 'DSN8002 ' THEN
GO TO CC0-LABEL1.
* **DSN8002
* **DETAIL MAP
* **MOVE DATA INTO
* **INPUT FIELDS
EXEC CICS RECEIVE MAP ('DSN8CCD') MAPSET ('DSN8CCD')
END-EXEC.
IF BMAJSYSL NOT = 0 THEN MOVE BMAJSYSI TO MAJSYS OF INAREA
ELSE MOVE 'O' TO MAJSYS OF INAREA.
IF BACTIONL NOT = 0 THEN MOVE BACTIONI TO ACTION OF INAREA
ELSE MOVE SPACES TO ACTION OF INAREA.
IF BOBJECTL NOT = 0 THEN MOVE BOBJECTI TO OBJFLD OF INAREA
ELSE MOVE SPACES TO OBJFLD OF INAREA.
IF BSEARCHL NOT = 0 THEN MOVE BSEARCHI TO SRCH OF INAREA
ELSE MOVE SPACES TO SRCH OF INAREA.
IF BDATAL NOT = 0 THEN MOVE BDATAI TO DATAIN OF INAREA
ELSE MOVE SPACES TO DATAIN OF INAREA.
MOVE 1 TO I.
* **GO TO VALIDATION MODULES
GO TO CC0-LABELX.
* **ERROR ON LASTSCREEN?
CC0-LABEL1.
IF LASTSCR OF PCONA NOT = 'DSN8001 ' THEN
EXEC CICS ABEND ABCODE ('LSCR') END-EXEC
GOBACK.
* **USING LAST SCREEN
* **SPECIFIED TO RECEIVE
* **INPUT FROM TERMINAL
EXEC CICS RECEIVE MAP ('DSN8CCG') MAPSET('DSN8CCG') END-EXEC.
*****************************************************************-
* IF DATA IS RECEIVED FOR A FIELD, THEN MOVE THE DATA INTO THE
* CORRESPONDING FIELD IN INAREA, OTHERWISE MOVE BLANKS.
*****************************************************************-
IF AMAJSYSL NOT = 0 THEN MOVE AMAJSYSI TO MAJSYS OF INAREA
ELSE MOVE 'O' TO MAJSYS OF INAREA.
IF AACTIONL NOT = 0 THEN MOVE AACTIONI TO ACTION OF INAREA
ELSE MOVE SPACES TO ACTION OF INAREA.
IF AOBJECTL NOT = 0 THEN MOVE AOBJECTI TO OBJFLD OF INAREA
ELSE MOVE SPACES TO OBJFLD OF INAREA.
IF ASEARCHL NOT = 0 THEN MOVE ASEARCHI TO SRCH OF INAREA
ELSE MOVE SPACES TO SRCH OF INAREA.
IF ADATAL NOT = 0 THEN MOVE ADATAI TO DATAIN OF INAREA
ELSE MOVE SPACES TO DATAIN OF INAREA.
GO TO CC0-LABEL3.
CC0-LABELX.
IF COL2LEN(I) NOT = 0 THEN MOVE COL2DATA(I) TO TRANDATA(I)
ELSE MOVE SPACES TO TRANDATA(I).
ADD 1 TO I.
* ** CC0-LABELX LOOP
CC0-LOOPX.
PERFORM CC0-LABELX UNTIL I > 15.
CC0-LABEL3.
MOVE 1 TO I.
MOVE 0 TO FOUND.
*****************************************************************-
* CONVERT THE PFKEY INFO IN EIBAID TO THE FORM ACCEPTED
* BY DSN8CC1 AND DSN8CC2 EG. PF1 = '01' AND PF13 = '01'.
*****************************************************************-
CC0-LABEL4.
* **PF KEYS 1-12
IF PFKEYS(I) = EIBAID THEN MOVE 1 TO FOUND
ELSE ADD 1 TO I.
* ** CC0-LABEL4 LOOP
CC0-LOOP4.
PERFORM CC0-LABEL4 UNTIL
I > 24 OR FOUND = 1.
* **PF KEYS > 12
CC0-LABEL5.
IF I > 12 THEN SUBTRACT 12 FROM I.
IF FOUND = 1 THEN
MOVE PFK(I) TO PFKIN OF INAREA
ELSE MOVE SPACES TO PFKIN OF INAREA.
GO TO CC0-LABEL6.
**************************************************************** -
* GO TO DSN8CC1, GET DCLGEN STRUCTURES AND TABLE DCL
*****************************************************************-
CC0SEND.
MOVE SPACES TO INAREA.
MOVE '00' TO PFKIN OF INAREA.
CC0-LABEL6.
MOVE 'O' TO MAJSYS IN INAREA.
EXEC CICS LINK PROGRAM ('DSN8CC1') COMMAREA(COMMAREA)
LENGTH(3000) END-EXEC.
GO TO CC0-NORMAL.
EXEC SQL INCLUDE DSN8MCXX END-EXEC.
**************************************************************** -
* AFTER RETURN FROM DSN8CC1, MOVE DATA TO OUTPUT MAP AREA AND
* SEND MAP ACCORDING TO MAP SPECIFIED IN LASTSCR OF PCONVSTA.
*****************************************************************-
CC0-NORMAL.
IF LASTSCR OF PCONVSTA = 'DSN8002 ' THEN GO TO CC0-LABEL9.
* **MOVE DATA INTO
* **OUTPUT FIELDS
MOVE HTITLE OF OUTAREA TO ATITLEO.
MOVE MAJSYS OF OUTAREA TO AMAJSYSO.
MOVE ACTION OF OUTAREA TO AACTIONO.
MOVE OBJFLD OF OUTAREA TO AOBJECTO.
MOVE SRCH OF OUTAREA TO ASEARCHO.
MOVE DATAOUT TO ADATAO.
MOVE MSG OF OUTAREA TO AMSGO.
MOVE DESC2 OF OUTAREA TO ADESCL2O.
MOVE DESC3 OF OUTAREA TO ADESCL3O.
MOVE DESC4 OF OUTAREA TO ADESCL4O.
MOVE PFKTEXT OF OUTAREA TO APFKEYO.
MOVE 1 TO I.
* **SEND MAP ACCORDING TO
* **PREVIOUS SCREEN
CC0-LABEL7.
MOVE LINE0(I) TO ALINEO(I).
ADD 1 TO I.
* **CC0-LABEL7 LOOP
CC0-LOOP7.
PERFORM CC0-LABEL7 UNTIL
I > 15.
*****************************************************************-
* CREATES A DYNAMIC CURSOR
*****************************************************************-
* **SET CURSOR POSITION
CC0-LABEL8.
MOVE ZEROES TO CURSOR-VALUE.
IF AACTIONO = SPACES THEN MOVE +179 TO CURSOR-VALUE
ELSE IF AOBJECTO = SPACES THEN MOVE +259 TO CURSOR-VALUE
ELSE IF ASEARCHO = SPACES THEN MOVE +339 TO CURSOR-VALUE
ELSE IF ADATAO = SPACES OR AACTIONO = 'D' OR 'E' THEN
MOVE +419 TO CURSOR-VALUE.
* **SEND OUTPUT MAP
IF CURSOR-VALUE = ZEROES THEN
EXEC CICS SEND MAP('DSN8CCG') MAPSET('DSN8CCG') END-EXEC
ELSE
EXEC CICS SEND MAP('DSN8CCG') MAPSET('DSN8CCG') ERASE
CURSOR(CURSOR-VALUE) END-EXEC.
* **FINISHED?
IF EXITCODE = '1' THEN GO TO CC0-LABEL12.
EXEC CICS RETURN TRANSID('D8CS') END-EXEC.
*****************************************************************-
* MOVES DATA FROM OUTPUT MAP AREA TO
* RECEIVE MAP ACCORDING TO MAP SPECIFIED IN LASTSCR OF PCONVST
*****************************************************************-
* **MOVE DATA
* **FROM OUTPUT FIELDS
CC0-LABEL9.
MOVE HTITLE OF OUTAREA TO BTITLEO.
MOVE MAJSYS OF OUTAREA TO BMAJSYSO.
MOVE ACTION OF OUTAREA TO BACTIONO.
MOVE OBJFLD OF OUTAREA TO BOBJECTO.
MOVE SRCH OF OUTAREA TO BSEARCHO.
MOVE DATAOUT TO BDATAO.
MOVE MSG OF OUTAREA TO BMSGO.
MOVE DESC2 OF OUTAREA TO BDESCL2O.
MOVE DESC3 OF OUTAREA TO BDESCL3O.
MOVE DESC4 OF OUTAREA TO BDESCL4O.
MOVE PFKTEXT OF OUTAREA TO BPFKEYO.
MOVE 1 TO I.
* **RECEIVE MAP ACCORDING
* **TO PREVIOUS SCREEN
CC0-LABEL10.
MOVE FIELD1(I) TO COL1DATA(I) .
* ** CHECK FOR ATTRIBUTE OF X'C0C1'
IF ATTR(I) = -16191 THEN MOVE -1 TO COL2LEN(I).
MOVE ATTR2(I) TO COL2ATTR(I) .
MOVE FIELD2(I) TO COL2DATA(I) .
ADD 1 TO I.
* ** CC0-LABEL10 LOOP
CC0-LOOP10.
PERFORM CC0-LABEL10 UNTIL
I > 15.
CC0-LABEL11.
*****************************************************************-
* CREATES A DYNAMIC CURSOR
*****************************************************************-
* **SET CURSOR POSITION
MOVE ZEROES TO CURSOR-VALUE.
IF BACTIONO = SPACES THEN MOVE +179 TO CURSOR-VALUE
ELSE IF BOBJECTO = SPACES THEN MOVE +259 TO CURSOR-VALUE
ELSE IF BSEARCHO = SPACES THEN MOVE +339 TO CURSOR-VALUE
ELSE IF BDATAO = SPACES OR BACTIONO = 'D' OR 'E' THEN
MOVE +419 TO CURSOR-VALUE.
* **SEND INPUT MAP
IF CURSOR-VALUE = ZEROES THEN
EXEC CICS SEND MAP('DSN8CCD') MAPSET('DSN8CCD') END-EXEC
ELSE
EXEC CICS SEND MAP('DSN8CCD') MAPSET('DSN8CCD') ERASE
CURSOR(CURSOR-VALUE) END-EXEC.
* **FINISHED?
IF EXITCODE = '1' THEN GO TO CC0-LABEL12.
EXEC CICS RETURN TRANSID('D8CS') END-EXEC.
GOBACK.
* **RETURN
CC0-LABEL12.
EXEC CICS RETURN END-EXEC.
GOBACK.