DSN8CP0
THIS MODULE ISSUES A CICS® RECEIVE MAP TO RETRIEVE INPUT, CALLS DSN8CP1, AND ISSUES A CICS SEND MAP AFTER RETURNING.
DSN8CP0: PROC OPTIONS (MAIN); 00010000
/********************************************************************* 00020000
* * 00030000
* MODULE NAME = DSN8CP0 * 00040000
* * 00050000
* DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION * 00060000
* SUBSYSTEM INTERFACE MODULE * 00070000
* CICS * 00080000
* PL/I * 00090000
* ORGANIZATION APPLICATION * 00100000
* * 00110000
* LICENSED MATERIALS - PROPERTY OF IBM 5655-DB2 * 00120000
* (C) COPYRIGHT 1982, 2010 IBM CORP. ALL RIGHTS RESERVED. * 00130000
* * 00140000
* STATUS = VERSION 10 * 00150000
* * 00160000
* FUNCTION = THIS MODULE ISSUES A CICS RECEIVE MAP TO RETRIEVE * 00170000
* INPUT, CALLS DSN8CP1, AND ISSUES A CICS SEND * 00180000
* MAP AFTER RETURNING. * 00190000
* * 00200000
* NOTES = * 00210000
* 1.THIS IS A CICS PSEUDO CONVERSATION PROGRAM WHICH * 00220000
* INITIALIZES ITSELF WHEN TERMINAL OPERATOR ENTERS * 00230000
* INPUT AFTER VIEWING THE SCREEN SENT BY PREVIOUS * 00240000
* ITERATIONS OF THE PROGRAM. * 00250000
* * 00260000
* DEPENDENCIES = TWO CICS MAPS(DSECTS) ARE REQUIRED: * 00270000
* DSN8MCMG AND DSN8MCMD * 00280000
* MODULES DSN8CP1 IS REQUIRED. * 00290000
* DCLGEN STRUCTURE DSN8MPCS IS REQUIRED. * 00300000
* INCLUDED PLI STRUCTURE DSN8MPCA IS REQUIRED. * 00310000
* * 00320000
* RESTRICTIONS = NONE * 00330000
* * 00340000
* * 00350000
* MODULE TYPE = PL/I PROC OPTIONS(MAIN) * 00360000
* PROCESSOR = DB2 PRECOMPILER, CICS TRANSLATOR, PL/I OPTIMIZE * 00370000
* MODULE SIZE = SEE LINK-EDIT * 00380000
* ATTRIBUTES = REUSABLE * 00390000
* * 00400000
* ENTRY POINT = DSN8CP0 * 00410000
* PURPOSE = SEE FUNCTION * 00420000
* LINKAGE = CICS/OS/VS ENTRY * 00430000
* * 00440000
* INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION: * 00450000
* SYMBOLIC LABEL/NAME = DSN8CPDI * 00460000
* DESCRIPTION = CICS BMS MAP FOR DETAIL INPUT * 00470000
* * 00480000
* SYMBOLIC LABEL/NAME = DSN8CPGI * 00490000
* DESCRIPTION = CICS BMS MAP FOR GENERAL INPUT * 00500000
* * 00510000
* OUTPUT = PARAMETERS EXPLICITLY RETURNED: * 00520000
* SYMBOLIC LABEL/NAME = DSN8CPDO * 00530000
* DESCRIPTION = CICS BMS MAP FOR DETAIL OUTPUT * 00540000
* * 00550000
* SYMBOLIC LABEL/NAME = DSN8CPGO * 00560000
* DESCRIPTION = CICS BMS MAP FOR GENERAL OUTPUT * 00570000
* * 00580000
* EXIT-NORMAL = CICS RETURN TRANSID(D8PS). * 00590000
* * 00600000
* EXIT-ERROR = DB_ERROR FOR SQL ERRORS. * 00610000
* NO PL/I ON CONDITIONS. * 00620000
* * 00630000
* RETURN CODE = NONE * 00640000
* * 00650000
* ABEND CODES = * 00660000
* CICS ABEND FOR CICS PROBLEMS. * 00670000
* MAPI - LASTSCREEN IS WRONG NAME ON INPUT * 00680000
* MAPO - SQL1 DID NOT PASS BACK VALID LASTSCREEN NAME * 00690000
* * 00700000
* ERROR-MESSAGES = NONE * 00710000
* * 00720000
* EXTERNAL REFERENCES = COMMON CICS REQUIREMENTS * 00730000
* ROUTINES/SERVICES = DSN8CP1 * 00740000
* * 00750000
* DATA-AREAS = * 00760000
* DSN8MPCA - PARAMETER TO BE PASSED TO DSN8CP1 * 00770000
* COMMON AREA * 00780000
* DSN8MPCS - DECLARE CONVERSATION STATUS * 00790000
* DSN8MPMD - CICS/OS/VS PL/I MAP, ORGANIZATION * 00800000
* DSN8MPMG - CICS/OS/VS PL/I MAP, ORGANIZATION * 00810000
* * 00820000
* CONTROL-BLOCKS = * 00830000
* SQLCA - SQL COMMUNICATION AREA * 00840000
* * 00850000
* TABLES = NONE * 00860000
* * 00870000
* CHANGE-ACTIVITY = NONE * 00880000
* * 00890000
* * 00900000
* *PSEUDOCODE* * 00910000
* * 00920000
* PROCEDURE * 00930000
* DECLARATIONS. * 00940000
* ALLOCATE PLI WORK AREA FOR COMMAREA. * 00950000
* PUT MODULE NAME 'DSN8CP0' IN AREA USED BY ERROR-HANDLER. * 00960000
* PUT CICS EIBTRMID IN PCONVSTA.CONVID TO BE PASSED TO DSN8CP1 00970000
* RETRIEVE LASTSCR FROM VCONA USING THE CONVID TO DETERMINE * 00980000
* WHICH OF THE TWO BMS MAPS SHOULD BE USED TO MAP IN DATA. * 00990000
* * 01000000
* IF RETRIEVAL IS SUCCESSFUL, THEN DO. * 01010000
* EXEC CICS RECEIVE MAP ACCORDING TO SPECIFIED LASTSCR. * 01020000
* IF MAPFAIL CONDITION IS RAISED* THEN DO. * 01030000
* COMPARM.PFKIN = '00' * 01040000
* GO TO CP0CP1 * 01050000
* END * 01060000
* * 01070000
* ELSE * 01080000
* PUT DATA FROM MAP INTO COMPARM ** * 01090000
* ELSE * 01100000
* IT IS A NEW CONVERSATION, AND NO EXEC CICS * 01110000
* RECEIVE MAP IS ISSUED. * 01120000
* * 01130000
* CP0CP1: * 01140000
* EXEC CICS LINK PROGRAM('DSN8CP1') COMMAREA(COMMAREA). * 01150000
* UPON RETURN FROM DSN8CP1, EXEC CICS SEND MAP ACCORDING TO * 01160000
* THE TYPE SPECIFIED IN PCONVSTA.LASTSCR. * 01170000
* EXEC CICS RETURN TRANSID(D8PS). * 01180000
* * 01190000
* END. * 01200000
* * 01210000
* * I.E. LAST CONVERSATION EXISTS, BUT OPERATOR HAD ENTERED * 01220000
* DATA FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON * 01230000
* SCREEN AND PRESSED ENTER. * 01240000
* * 01250000
* ** COMPARM.PFKIN = PF KEY ACTUALLY USED I.E. '01' FOR * 01260000
* PF1... * 01270000
*-------------------------------------------------------------------*/ 01280000
%PAGE; 01290000
/*------------------------------------------------------------------*/ 01300000
/* */ 01310000
/* */ 01320000
/* */ 01330000
/* */ 01340000
/* SQL0 CICS (DSN8CP0) */ 01350000
/* */ 01360000
/* */ 01370000
/* */ 01380000
/* */ 01390000
/* */ 01400000
/*------------------------------------------------------------------*/ 01410000
EXEC SQL INCLUDE DSN8MPCA; /* COMMAREA */ 01420000
EXEC SQL INCLUDE DSN8MPMG; /* 1ST MAP, BUILT FROM DSN8CPG */ 01430000
EXEC SQL INCLUDE DSN8MPMD; /* 2ND MAP, BUILT FROM DSN8CPD */ 01440000
EXEC SQL INCLUDE SQLCA; /*COMMUNICATION AREA */ 01450000
EXEC SQL INCLUDE DSN8MPCS; /* PCONA */ 01460000
01470000
/****************************************************************/ 01480000
/* ** DCLGENS AND INITIALIZATIONS */ 01490000
/****************************************************************/ 01500000
01510000
DCL STRING BUILTIN; 01520000
DCL J FIXED BIN; 01530000
DCL SAVE_CONVID CHAR(16); 01540000
/* DECLARE CONTROL FLAGS */ 01550000
DCL ( SENDBIT, ENDBIT, NEXTBIT, ON, OFF) BIT(1); 01560000
01570000
/********************************************************/ 01580000
/* ** FIELDS SENT TO MESSAGE ROUTINE */ 01590000
/********************************************************/ 01600000
01610000
DCL MODULE CHAR (07); 01620000
DCL OUTMSG CHAR (69); 01630000
01640000
DCL DSN8MPG EXTERNAL ENTRY; 01650000
0/*********************************************************************/01660000
/* SUBMAP REDEFINES THE PL/I STRUCTURE ASSOCIATED WITH THE */01670000
/* CICS MAP DSN8CPD. */01680000
/*********************************************************************/01690000
0DCL MAP1PTR PTR, 01700000
MAP2PTR PTR; 01710000
DCL IOAREA AREA(2048); 01720000
0DCL 1 SUBMAP(15) BASED (ADDR(DSN8CPDI.LINE1F1L)) UNALIGNED, 01730000
2 COL1LEN FIXED BIN (15,0) , 01740000
2 COL1ATTR CHAR (1) , 01750000
2 COL1DATA CHAR (37) , 01760000
2 COL2LEN FIXED BIN (15,0) , 01770000
2 COL2ATTR CHAR (1) , 01780000
2 COL2DATA CHAR (40) ; 01790000
0/*********************************************************************/01800000
/* PFSTRG IS AN ARRAY OF 24 ELEMENTS REPRESENTING THE DIFFERENT */01810000
/* PFKEYS AS THEY WOULD BE REPRESENTED IN EIBAID. */01820000
/*********************************************************************/01830000
0DCL CONVID CHAR(16) ; 01840000
DCL PFSTRG CHAR(24) INIT ('123456789:#@ABCDEFGHI>.<') , 01850000
0/*********************************************************************/01860000
/* PFK IS AN ARRAY OF 12 TWO-BYTE CHARS REPRESENTING THE PFKEYS */01870000
/* ALLOWED AS INPUT TO DSN8CP1 AND DSN8CP2 ETC. */01880000
/*********************************************************************/01890000
PFK(12) CHAR(2) INIT ('01','02','03','04','05','06', 01900000
'07','08','09','10','11','12' ), 01910000
N FIXED BIN; 01920000
01930000
01940000
0/*********************************************************************/01950000
/* SQL RETURN CODE HANDLING */01960000
/*********************************************************************/01970000
EXEC SQL WHENEVER SQLERROR GO TO DB_ERROR; 01980000
EXEC SQL WHENEVER SQLWARNING GO TO DB_ERROR; 01990000
02000000
0/*********************************************************************/02010000
/* ALLOCATE PL/I WORK AREA / INITIALIZE VARIABLES */02020000
/*********************************************************************/02030000
02040000
0ALLOCATE COMMAREA SET(COMMPTR); /*ALLOCATE COMMON AREA */ 02050000
MAP1PTR = ADDR(IOAREA); /* SET THE POINTER FOR THE GENERAL MAP */ 02060000
MAP2PTR = ADDR(IOAREA); /* SET THE POINTER FOR THE DETAIL MAP */ 02070000
COMMAREA = '' ; /*CLEAR COMMON AREA */ 02080000
DSN8_MODULE_NAME.MAJOR = 'DSN8CP0 '; /*GET MODULE NAME */ 02090000
02100000
/*CONSTRUCT CICS CONVERSATION ID */ 02110000
/*A 4 CHAR TERMINAL ID CON-*/ 02120000
/*CATENATED WITH 12 BLANKS*/ 02130000
CONVID,PCONVSTA.CONVID = EIBTRMID || ' ' ; 02140000
OUTAREA.MAJSYS = 'O'; /*SET MAJOR SYSTEM TO O-ORGANIZATION*/ 02150000
EXITCODE = '0'; /*CLEAR EXIT CODE */ 02160000
02170000
EXEC CICS HANDLE CONDITION MAPFAIL(CP0SEND); 02180000
02190000
0/*********************************************************************/02200000
/* TRY TO RETRIEVE LAST CONVERSATION. IF SUCCESSFUL, USE THE */02210000
/* LAST SCREEN SPECIFIED TO RECEIVE INPUT FROM TERMINAL. */02220000
/*********************************************************************/02230000
02240000
0 EXEC SQL SELECT LASTSCR 02250000
INTO :PCONA.LASTSCR 02260000
FROM VCONA 02270000
WHERE CONVID = :CONVID ; 02280000
02290000
0/*********************************************************************/02300000
/* IF LAST CONVERSATION DOES NOT EXIST, THEN DO NOT ATTEMPT TO */02310000
/* RECEIVE INPUT MAP. GO DIRECTLY TO VALIDATION MODULES */02320000
/* TO GET TITLE ETC. FOR OUTPUT MAP. */02330000
/*********************************************************************/02340000
02350000
0 IF SQLCODE = +100 THEN GO TO CP0SEND; 02360000
02370000
0/*********************************************************************/02380000
/* IF DATA IS RECEIVED FOR A FIELD, THEN .........MOVE THE DATA */02390000
/* INTO THE CORRESPONDING FIELDS IN INAREA, OTHERWISE MOVE BLANKS. */02400000
/* */02410000
/* IF LAST CONVERSATION EXISTS, BUT OPERATOR HAS ENTERED DATA */02420000
/* FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON A FORMATTED */02430000
/* SCREEN AND PRESSED ENTER THEN ......... */02440000
/* MOVE DATA INTO CORRESPONDING FIELDS IN INAREA AND GO TO */02450000
/* VALIDATION MODULES. */02460000
/*********************************************************************/02470000
02480000
IF PCONA.LASTSCR = 'DSN8001 ' THEN 02490000
DO; 02500000
/*USING LAST SCREEN */ 02510000
/*SPECIFIED TO RECEIVE*/ 02520000
/*INPUT FROM TERMINAL*/ 02530000
EXEC CICS RECEIVE MAP ('DSN8CPG') MAPSET ('DSN8CPG') ; 02540000
02550000
IF AMAJSYSL ^= 0 THEN COMPARM.MAJSYS = AMAJSYSI; 02560000
ELSE COMPARM.MAJSYS = 'O'; 02570000
IF AACTIONL ^= 0 THEN COMPARM.ACTION = AACTIONI; 02580000
ELSE COMPARM.ACTION = ' '; 02590000
IF AOBJECTL ^= 0 THEN COMPARM.OBJFLD = AOBJECTI; 02600000
ELSE COMPARM.OBJFLD = ' '; 02610000
IF ASEARCHL ^= 0 THEN COMPARM.SEARCH = ASEARCHI; 02620000
ELSE COMPARM.SEARCH = ' '; 02630000
IF ADATAL ^= 0 THEN COMPARM.DATA = ADATAI ; 02640000
ELSE COMPARM.DATA = ' '; 02650000
END; 02660000
02670000
0 ELSE IF PCONA.LASTSCR = 'DSN8002 ' THEN 02680000
DO; 02690000
/*MOVE DATA INTO */ 02700000
/*INPUT FIELDS */ 02710000
EXEC CICS RECEIVE MAP ('DSN8CPD') MAPSET('DSN8CPD') ; 02720000
02730000
IF BMAJSYSL ^= 0 THEN COMPARM.MAJSYS = BMAJSYSI; 02740000
ELSE COMPARM.MAJSYS = 'O'; 02750000
IF BACTIONL ^= 0 THEN COMPARM.ACTION = BACTIONI; 02760000
ELSE COMPARM.ACTION = ' '; 02770000
IF BOBJECTL ^= 0 THEN COMPARM.OBJFLD = BOBJECTI; 02780000
ELSE COMPARM.OBJFLD = ' '; 02790000
IF BSEARCHL ^= 0 THEN COMPARM.SEARCH = BSEARCHI; 02800000
ELSE COMPARM.SEARCH = ' '; 02810000
IF BDATAL ^= 0 THEN COMPARM.DATA = BDATAI ; 02820000
ELSE COMPARM.DATA = ' '; 02830000
02840000
DO I = 1 TO 15; 02850000
IF SUBMAP.COL2LEN(I) ^= 0 THEN 02860000
COMPARM.TRANDATA(I) = SUBMAP.COL2DATA(I) ; 02870000
ELSE COMPARM.TRANDATA(I) = ' '; 02880000
END; 02890000
END; 02900000
02910000
0 ELSE /* WRONG LASTSCREEN NAME*/ 02920000
DO; 02930000
EXEC CICS ABEND ABCODE ('MAPI'); 02940000
END; 02950000
02960000
0/*********************************************************************/02970000
/* CONVERT THE PFKEY INFO IN EIBAID TO THE FORM ACCEPTED */02980000
/* BY DSN8CP1 AND DSN8CP2 ETC. EG. PF1 = '01' AND PF13 = '01'. */02990000
/*********************************************************************/03000000
03010000
0 N = INDEX ( PFSTRG , EIBAID ) ; 03020000
03030000
IF N ^= 0 THEN /* IF PF KEY USED */ 03040000
DO; 03050000
IF N > 12 THEN N = N - 12 ; /* PF13 = PF1 ETC. */ 03060000
COMPARM.PFKIN = PFK(N) ; 03070000
END; 03080000
03090000
ELSE COMPARM.PFKIN = ' '; /* IF ENTER | PAKEYS */ 03100000
GO TO CP0CP1; 03110000
03120000
/*********************************************************************/03130000
/* */03140000
/* GO TO DSN8CP1, GET DCLGEN STRUCTURES AND TABLE DCL */03150000
/* */03160000
/*********************************************************************/03170000
CP0SEND : 03180000
0 INAREA = ' ' ; /*BLANK OUT INAREA */ 03190000
COMPARM.PFKIN = '00' ; /*PUT '00' INTO PFKIN*/ 03200000
03210000
CP0CP1 : 03220000
INAREA.MAJSYS = 'O'; /*SET MAJOR SYSTEM TO O-ORGANIZATION */ 03230000
03240000
/*GO TO DSN8CP1 */ 03250000
EXEC CICS LINK PROGRAM ('DSN8CP1') COMMAREA(COMMAREA) 03260000
LENGTH(3000); 03270000
03280000
0 EXEC SQL INCLUDE DSN8MPXX; /*GET DCLGEN STRUCTURES*/ 03290000
03300000
/*********************************************************************/03310000
/* */03320000
/* AFTER RETURN FROM DSN8CP1 (SQL1), THE PROGRAM EXAMINES DATA */03330000
/* PASSED BACK IN PCONVSTA TO SEE WHAT KIND OF SCREEN SHOULD BE */03340000
/* SENT. PUT THAT DATA INTO THE OUTPUT MAP AND SEND OUTPUT. */03350000
/* IF A SQL ERROR OR WARNING HAD OCCURRED PREVIOUSLY, THE ERROR */03360000
/* MESSAGES ARE EXPECTED TO HAVE BEEN PUT INTO PCONVSTA. */03370000
/* */03380000
/*********************************************************************/03390000
03400000
IF PCONVSTA.LASTSCR = 'DSN8001 ' THEN /*MOVE DATA INTO */ 03410000
DO; /*OUTPUT FIELDS */ 03420000
ATITLEO = PCONVSTA.TITLE ; 03430000
AMAJSYSO= PCONVSTA.MAJSYS; 03440000
AACTIONO= PCONVSTA.ACTION; 03450000
AOBJECTO= PCONVSTA.OBJFLD; 03460000
ASEARCHO= PCONVSTA.SEARCH; 03470000
ADATAO = PCONVSTA.DATA ; 03480000
AMSGO = PCONVSTA.MSG ; 03490000
ADESCL2O= PCONVSTA.DESC2 ; 03500000
ADESCL3O= PCONVSTA.DESC3 ; 03510000
ADESCL4O= PCONVSTA.DESC4 ; 03520000
APFKEYO = PCONVSTA.PFKTEXT; 03530000
03540000
DO I = 1 TO 15; /*SEND MAP ACCORDING TO */ 03550000
ALINEO(I) = PCONVSTA.OUTPUT.LINE(I); /*PREVIOUS SCREEN*/ 03560000
END; 03570000
03580000
0/*********************************************************************/03590000
/* CREATES A DYNAMIC CURSOR */03600000
/*********************************************************************/03610000
/*SET CURSOR POSITION */ 03620000
CURSOR_VALUE = 0; /*CLEAR CURSOR*/ 03630000
IF AACTIONO = ' ' THEN /*CURSOR SET TO*/ 03640000
CURSOR_VALUE = 179; /*ACTION POSITION*/ 03650000
ELSE 03660000
IF AOBJECTO = ' ' THEN /*CURSOR SET TO*/ 03670000
CURSOR_VALUE = 259; /*OBJFLD POSITION*/ 03680000
ELSE 03690000
IF ASEARCHO = ' ' THEN /*CURSOR SET TO*/ 03700000
CURSOR_VALUE = 339; /*SEARCH CRITERIA POSITION*/ 03710000
ELSE 03720000
IF ADATAO = ' ' | 03730000
( AACTIONO = 'D' | 03740000
AACTIONO = 'E' ) THEN /*CURSOR SET TO */ 03750000
CURSOR_VALUE = 419; /*DATA POSITION*/ 03760000
03770000
IF CURSOR_VALUE = 0 THEN /*SEND OUTPUT MAP */ 03780000
EXEC CICS SEND MAP('DSN8CPG') MAPSET('DSN8CPG') ERASE; 03790000
ELSE 03800000
EXEC CICS SEND MAP('DSN8CPG') MAPSET('DSN8CPG') ERASE 03810000
CURSOR(CURSOR_VALUE); 03820000
03830000
IF EXITCODE = '1' THEN /* FINISHED ? */ 03840000
EXEC CICS RETURN ; /* EXIT, DON'T REINVOKE TRANSACTION */ 03850000
ELSE 03860000
EXEC CICS RETURN TRANSID('D8PS'); /* STANDARD EXIT */ 03870000
END; 03880000
03890000
0/*********************************************************************/03900000
/* MOVES DATA FROM OUTPUT MAP AREA TO */03910000
/* RECEIVE MAP ACCORDING TO MAP SPECIFIED IN LASTSCR OF PCONVST */03920000
/*********************************************************************/03930000
0 ELSE IF PCONVSTA.LASTSCR = 'DSN8002 ' THEN 03940000
DO; 03950000
/*MOVE DATA*/ 03960000
/*FROM OUTPUT FIELDS*/ 03970000
BTITLEO = PCONVSTA.TITLE ; 03980000
BMAJSYSO= PCONVSTA.MAJSYS; 03990000
BACTIONO= PCONVSTA.ACTION; 04000000
BOBJECTO= PCONVSTA.OBJFLD; 04010000
BSEARCHO= PCONVSTA.SEARCH; 04020000
BDATAO = PCONVSTA.DATA ; 04030000
BMSGO = PCONVSTA.MSG ; 04040000
BDESCL2O= PCONVSTA.DESC2 ; 04050000
BDESCL3O= PCONVSTA.DESC3 ; 04060000
BDESCL4O= PCONVSTA.DESC4 ; 04070000
BPFKEYO = PCONVSTA.PFKTEXT; 04080000
04090000
DO I = 1 TO 15 ; /*RECEIVE MAP ACCORDING*/04100000
SUBMAP.COL1DATA(I) = REOUT.FIELD1(I); /*TO PREVIOUS SCREEN*/04110000
0 /*-----------------------------------------------------------------*/ 04120000
/* */ 04130000
/* MODULES DSN8MPE, DSN8MPF ETC. IN SQL2 HAVE PUT THE */ 04140000
/* ATTRIBUTE BYTE AND CURSOR CONTROL INFO IN IMS MFS */ 04150000
/* FORM - HEX'C0' FOR DYNAMIC CURSOR WITH 2 BYTES OF */ 04160000
/* ATTRIBUTE INFORMATION TO FOLLOW. THIS PROGRAM CHECKS */ 04170000
/* FOR THE HEX'C0' AND INSERTS -1 INTO */ 04180000
/* THE LENGTH FIELD ASSOCIATED WITH THE DATA TO CONFORM */ 04190000
/* WITH THE STANDARD WAY OF HANDLING DYNAMIC CURSORS IN */ 04200000
/* CICS. SIMILARLY, ONLY THE SECOND OF THE TWO ATTRIBUTE */ 04210000
/* BYTES IS MOVED INTO THE CICS ATTRIBUTE BYTE. THE */ 04220000
/* FIRST TWO BITS OF THE ATTRIBUTE BYTE IS DIFFERENT */ 04230000
/* BETWEEN IMS AND CICS STANDARD REPRESENTATIONS, HOWEVER */ 04240000
/* 3270 MANUALS INDICATE THAT ON OUTPUT, THE FIRST */ 04250000
/* TWO BITS ARE IGNORED. THUS THE SAME ATTRIBUTE BYTE */ 04260000
/* IS USED BETWEEN IMS AND CICS MODULES. */ 04270000
/* */ 04280000
/*-----------------------------------------------------------------*/ 04290000
0 IF UNSPEC(REOUT.ATTR1(I)) = '11000000'B /* X'C0' ATTR */ 04300000
THEN SUBMAP.COL2LEN(I) = -1; 04310000
SUBMAP.COL2ATTR(I) = REOUT.ATTR2(I); 04320000
SUBMAP.COL2DATA(I) = REOUT.FIELD2(I); 04330000
END; 04340000
0/*********************************************************************/04350000
/* CREATES A DYNAMIC CURSOR */04360000
/*********************************************************************/04370000
/*SET CURSOR POSITION */ 04380000
CURSOR_VALUE = 0; /*CLEAR CURSOR */ 04390000
IF BACTIONO = ' ' THEN /*CURSOR SET TO*/ 04400000
CURSOR_VALUE = 179; /*ACTION POSITION*/ 04410000
ELSE 04420000
IF BOBJECTO = ' ' THEN /*CURSOR SET TO*/ 04430000
CURSOR_VALUE = 259; /*OBJFLD POSITION*/ 04440000
ELSE 04450000
IF BSEARCHO = ' ' THEN /*CURSOR SET TO*/ 04460000
CURSOR_VALUE = 339; /*SEARCH CRITERIA*/ 04470000
ELSE 04480000
IF BDATAO = ' ' | 04490000
(BACTIONO = 'D' | 04500000
BACTIONO = 'E' ) THEN /*CURSOR SET TO */ 04510000
CURSOR_VALUE = 419; /*DATA POSITION*/ 04520000
04530000
IF CURSOR_VALUE = 0 THEN /*SEND INPUT MAP */ 04540000
EXEC CICS SEND MAP('DSN8CPD') MAPSET('DSN8CPD') ERASE; 04550000
ELSE 04560000
EXEC CICS SEND MAP('DSN8CPD') MAPSET('DSN8CPD') ERASE 04570000
CURSOR(CURSOR_VALUE); 04580000
04590000
IF EXITCODE = '1' THEN /*FINISHED ? */ 04600000
EXEC CICS RETURN ; /* EXIT, DON'T REINVOKE TRANSACTION */ 04610000
ELSE 04620000
EXEC CICS RETURN TRANSID('D8PS'); /* STANDARD EXIT */ 04630000
END; 04640000
0 /* SQL1 DID NOT PASS BACK VALID LASTSCREEN NAME */ 04650000
ELSE EXEC CICS ABEND ABCODE ('MAPO'); 04660000
END; 04670000