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