//DSPSCIX0 JOB MSGLEVEL=(1,1),MSGCLASS=H,CLASS=A,NOTIFY=&SYSUID, 00010001 // REGION=0M 00011000 //ASMIT PROC MBR=TEMPNAME 00020000 //* IMS V8 DSPSCIX0 (IMSPLEX=) exit for PROD images. 00030001 //ASM EXEC PGM=ASMA90,PARM='NODECK,OBJECT,LIST,XREF(SHORT)' 00040000 //SYSPRINT DD SYSOUT=* 00041000 //SYSLIN DD UNIT=3380,DISP=(,PASS,DELETE),SPACE=(CYL,(1,1)), 00042000 // DCB=(RECFM=F,LRECL=80,BLKSIZE=80) 00043000 //SYSLIB DD DISP=SHR,DSN=MVSBUILD.IMS810.SDFSMAC 00044000 // DD DISP=SHR,DSN=SYS1.MACLIB 00045000 //SYSUT1 DD UNIT=3380,DISP=(,DELETE,DELETE),SPACE=(CYL,(1,1)) 00046000 //* 00047000 //LKED EXEC PGM=IEWL,COND=(0,LT,ASM), 00048000 // REGION=1024K, 00049000 // PARM='RENT,LIST,MAP,XREF,AMODE(31),RMODE(ANY)' 00049100 //SYSPRINT DD SYSOUT=* 00049200 //SYSLIN DD DISP=(OLD,DELETE,DELETE), 00049300 // DSN=*.ASM.SYSLIN,VOL=REF=*.ASM.SYSLIN 00049400 //SYSLMOD DD DISP=SHR,DSN=IMS810.PET.DYNALLOC(&MBR) 00049501 //SYSUT1 DD UNIT=(3380,SEP=(SYSLMOD,SYSLIN)), 00049700 // DISP=(,DELETE,DELETE),SPACE=(CYL,(1,1)) 00049800 // PEND 00049900 //DSPSCIX0 EXEC PROC=ASMIT,MBR=DSPSCIX0 00050000 //ASM.SYSIN DD * 00051000 SCIX TITLE 'DSPSCIX0 -- DBRC SCI registration exit' 00060000 DSPSCIX0 CSECT , 00100000 */***START OF SPECIFICATIONS******************************************/ 00150000 */* */ 00200000 */*01* MODULE-NAME: */ 00250000 */* DSPSCIX0 */ 00300000 */* */ 00350000 */*01* DESCRIPTIVE-NAME: */ 00400000 */* DBRC SCI registration exit */ 00450000 */* */ 00500000 */*01* COPYRIGHT: */ 00550000 */* */ 00600000 */************************************************************@SCPYRT*/ 00650000 */* */ 00700000 */* Licensed Materials - Property of IBM */ 00750000 */* */ 00800000 */* Restricted Materials of IBM */ 00850000 */* */ 00900000 */* 5655-C56 */ 00950000 */* */ 01000000 */* (C) Copyright IBM Corp. 1974,1998 All Rights Reserved */ 01006000 */* */ 01010000 */* US Government Users Restricted Rights - Use, duplication or */ 01018000 */* disclosure restricted by GSA ADP Schedule contract with */ 01020000 */* IBM Corp. */ 01030000 */* */ 01037000 */************************************************************@ECPYRT*/ 01050000 */* */ 01100000 */* */ 01150000 */*01* STATUS: */ 01200000 */* IMS/VS 8.1 */ 01250000 */*01* FUNCTION: */ 01300000 */* Provide IMSplex name which DBRC will use */ 01350000 */* for SCI registration. This should be the */ 01400000 */* same IMSplex used by all other DBRCs that */ 01450000 */* share the same RECON data sets. */ 01500000 */* */ 01550000 */*01* OPERATION: */ 01600000 */* */ 01650000 */* DSPSCIX0 is given the data set name of */ 01700000 */* one of the RECONs and, if specified, the */ 01750000 */* value of the IMSPLEX parameter on the */ 01800000 */* job step EXEC statement. If the IMSPLEX */ 01850000 */* parameter exists, its value is returned */ 01900000 */* as the IMSplex name to be used. */ 01950000 */* */ 02000000 */* Otherwise, DSPSCIX0 searches table */ 02050000 */* PLEXTABL for an entry with a matching */ 02100000 */* data set name. The IMSplex name and */ 02150000 */* return code from that entry are returned */ 02200000 */* to DBRC. */ 02250000 */* */ 02300000 */* The shipped version of DSPSCIX0 returns */ 02350000 */* RC04, indicating that no SCI registration */ 02400000 */* is to be done. */ 02450000 */* */ 02500000 */* DSPSCIX0 can be modified to return */ 02550000 */* IMSplex names associated with RECON data */ 02600000 */* set names, to force RECON access where */ 02650000 */* it would otherwise be denied, and to */ 02700000 */* deny RECON access under user determined */ 02750000 */* circumstances. */ 02800000 */* */ 02850000 */*02* RESTRICTIONS: */ 02900000 */* Standard linkage conventions must be */ 02950000 */* followed. */ 03000000 */* */ 03050000 */* The data set name in the last entry of */ 03100000 */* table PLEXTABL must be '*'. This */ 03150000 */* value is used to guarantee termination */ 03200000 */* of the table search. The IMSplex name */ 03250000 */* and return code in this last entry are */ 03300000 */* thus the default response when no */ 03350000 */* specific match is found. */ 03400000 */* */ 03450000 */*01* MODULE-TYPE: */ 03500000 */* CSECT. */ 03550000 */* */ 03600000 */*02* PROCESSOR: */ 03650000 */* ASSEMBLER H */ 03700000 */*02* ATTRIBUTES: */ 03750000 */* LOCATION: JPA */ 03800000 */* STATE: PROBLEM */ 03850000 */* AMODE: 31 */ 03900000 */* RMODE: ANY */ 03950000 */* KEY: CALLER */ 04000000 */* PROCESS MODE: TASK */ 04050000 */* X-MEM MODE: PRIMARY=SECONDARY=HOME */ 04100000 */* ASC MODE: PRIMARY */ 04150000 */* TYPE: REENTRANT */ 04200000 */* */ 04250000 */*01* ENTRY-POINT: */ 04300000 */* DSPSCIX0 */ 04350000 */* */ 04400000 */*02* LINKAGE: */ 04450000 */* BALR 14,15 */ 04500000 */* */ 04550000 */*03* ENTRY-REGISTERS: */ 04600000 */* R1 A(PARM LIST) */ 04650000 */* R13 A(72 BYTE MVS STANDARD SAVEAREA, */ 04700000 */* NOT AN IMS CHAINED SAVERAREA). */ 04750000 */* R14 RETURN ADDRESS */ 04800000 */* R15 ENTRY POINT ADDRESS */ 04850000 */* */ 04900000 */*01* INPUT: */ 04950000 */* PARM LIST: */ 05000000 */* WORD CONTENT */ 05050000 */* R1-> 1 ... address of 44 byte area containing */ 05100000 */* the name of one of the RECONs in */ 05150000 */* use, left justified and padded */ 05200000 */* with blanks */ 05250000 */* 2 ... address of a 5 byte area where */ 05300000 */* the IMSplex name is returned */ 05350000 */* 3 ... if the job step EXEC statement */ 05400000 */* specified a value for the parameter */ 05450000 */* IMSPLEX, this will be the address */ 05500000 */* of a 5 byte area containing that */ 05550000 */* value, left justified and padded */ 05600000 */* with blanks. Otherwise, this will */ 05650000 */* contain zeroes. */ 05700000 */* */ 05750000 */*01* OUTPUT: */ 05800000 */* Either parameter 2 is set to an IMSplex name */ 05850000 */* or a non-zero return code is returned in */ 05900000 */* register 15. */ 05950000 */* */ 06000000 */*01* EXIT-NORMAL: */ 06050000 */* BR 14 TO CALLER. */ 06100000 */* */ 06150000 */*02* CONDITIONS: */ 06200000 */* */ 06250000 */*03* EXIT-REGISTERS: */ 06300000 */* ALL REGISTERS RESTORED */ 06350000 */* */ 06400000 */*02* RETURN-CODES: */ 06450000 */* CODE IN REGISTER 15 - EFFECT */ 06500000 */* */ 06550000 */* 0 - DBRC expects a valid IMSplex name to be */ 06600000 */* returned in the parameter list. */ 06650000 */* 4 - RECON Loss Notification is not active */ 06700000 */* and RECON access is attempted without */ 06750000 */* SCI registration. If the RECON */ 06800000 */* indicates that RECON Loss Notification */ 06850000 */* is active, DSP1136I is issued and RECON */ 06900000 */* access fails. */ 06950000 */* 8 - RECON Loss Notification is not active */ 07000000 */* and RECON access is forced without */ 07050000 */* regard to RECON content. DSP1143I is */ 07100000 */* issued. */ 07150000 */* 12 - RECON access is denied message DSP1139I */ 07200000 */* is issued. */ 07250000 */* */ 07300000 */*01* EXIT-ERROR: */ 07350000 */* NONE */ 07400000 */* */ 07450000 */* */ 07500000 */*01* CHANGE-ACTIVITY: */ 07550000 */* */ 07600000 */* */ 07650000 */* */ 07700000 */***END OF SPECIFICATIONS********************************************/ 07750000 EJECT , 07800000 DSPSCIX0 AMODE 31 07850000 DSPSCIX0 RMODE ANY 07900000 SAVE (14,12) 07950000 USING DSPSCIX0,R12 08000000 LR R12,R15 ADDRESSABILITY 08050000 B CHGID SKIP MAINTENENCE IDS 08100000 DC C'DBRC SCI REGISTRATION EXIT' 08150000 DC C' ' 08200000 DC C'DSPSCIX0' MODNAME 08250000 DC C'-' 08300000 DC C'UP8AAL01' LATEST MAINTENENCE 08350000 DC C'-' 08400000 DC C'1' ID 1 = UP8AAL01 (BASE) 08450000 DC C' ' 08500000 CHGID DS 0H 08550000 *--------------------------------------------------------------------- 08600000 * pick up parameter addresses 08650000 *--------------------------------------------------------------------- 08700000 L R2,0(,R1) R2 = A(RECON DSN) 08750000 L R3,4(,R1) R3 = A(IMSPLEX NAME RETURN AREA) 08800000 L R4,8(,R1) R4 = A(IMSPLEX VALUE FROM EXEC CARD) 08850000 *--------------------------------------------------------------------- 08900000 * if IMSPLEX= specified on EXEC card, return that value with RC00 08950000 *--------------------------------------------------------------------- 09000000 LTR R4,R4 IMSPLEX= ON EXEC STATEMENT? 09050000 BZ NEXECPRM IF NOT SPECIFIED, BRANCH 09100000 MVC 0(PNL,R3),0(R4) ELSE COPY VALUE TO RETURN AREA 09150000 SR R15,R15 SET RC00 09200000 B EXIT AND RETURN TO DBRC 09250000 *--------------------------------------------------------------------- 09300000 * IMSPLEX= not found on EXEC card, scan RECON name table for match 09350000 *--------------------------------------------------------------------- 09400000 NEXECPRM DS 0H 09450000 LA R5,PLEXTABL R5 = A(TABLE ENTRY) 09500000 USING PTENT,R5 09550000 PTBLLOOP DS 0H 09600000 *--------------------------------------------------------------------- 09650000 * Compare RECON and table entry data set names character by character 09700000 *--------------------------------------------------------------------- 09750000 SR R6,R6 R6 = CHARACTER INDEX 09800000 LA R14,DSNL R14 = UPPER LIMIT TO INDEX 09850000 CHARLOOP DS 0H 09900000 LA R1,DSN(R6) A(CHAR IN TABLE DSN) 09950000 CLI 0(R1),C'*' WILDCARD? 10000000 BE DSNMATCH IF SO, MATCH TO HERE GOOD ENOUGH 10050000 LA R15,0(R6,R2) A(CHAR IN RECON DSN) 10100000 CLC 0(1,R1),0(R15) DSNS MATCH AT THIS CHARACTER? 10150000 BNE NEXTENT IF NOT, NEXT ENTRY 10200000 LA R6,1(,R6) ELSE ADVANCE TO NEXT CHARACTER 10250000 CR R6,R14 DONE YET? 10300000 BL CHARLOOP IF NOT, TEST NEXT CHARACTER 10350000 B DSNMATCH ELSE DSNS MATCH 10400000 *--------------------------------------------------------------------- 10450000 * Advance to next entry in PLEXTABL 10500000 *--------------------------------------------------------------------- 10550000 NEXTENT DS 0H 10600000 LA R5,EL(,R5) GO TO NEXT ENTRY 10650000 B PTBLLOOP GO SEE IF NEXT ENTRY IS A MATCH 10700000 *--------------------------------------------------------------------- 10750000 * Matching entry found. Set IMSPLEX name and return code from entry. 10800000 *--------------------------------------------------------------------- 10850000 DSNMATCH DS 0H 10900000 MVC 0(PNL,R3),PN TABLE IMSPLEX NAME TO RETURN AREA 10950000 ICM R15,15,RC TABLE RETURN CODE TO R15 11000000 *--------------------------------------------------------------------- 11050000 * Return to DBRC 11100000 *--------------------------------------------------------------------- 11150000 EXIT DS 0H 11200000 RETURN (14,12),T,RC=(15) 11250000 EJECT , 11300000 *--------------------------------------------------------------------- 11350000 * RECON-name-to-IMSplex-name table 11400000 * Table is searched from top down until a match is found. 11450000 *--------------------------------------------------------------------- 11500000 PTBLEYEC DS 0H TABLE EYECATCHER 11550000 DC C'PLEXTABL' 11600000 PLEXTABL DS 0H 11650000 * 11700000 * entries for PROD system RECONs 11750001 * BAF 11/07/03 11800001 DC CL(DSNL)'RECON1.PROD' RECON NAME 11850001 DC CL(PNL)'PROD ' IMSplex name 11900001 DC XL(RCL)'00000000' RC00 = use the IMSplex name 11950000 DC CL(DSNL)'RECON2.PROD' RECON NAME 11960001 DC CL(PNL)'PROD ' IMSplex name 12050001 DC XL(RCL)'00000000' RC00 = use the IMSplex name 12100000 DC CL(DSNL)'RECON3.PROD' RECON NAME 12110001 DC CL(PNL)'PROD ' IMSplex name 12200001 DC XL(RCL)'00000000' RC00 = use the IMSplex name 12250000 * sample entries for a specific set of RECONs 12260000 * 12270000 * DC CL(DSNL)'PROD.RECON1' RECON name 12280000 * DC CL(PNL)'PLEXA' IMSplex name 12290000 * DC XL(RCL)'00000000' RC00 = use the IMSplex name 12291000 * DC CL(DSNL)'PROD.RECON2' RECON name 12292000 * DC CL(PNL)'PLEXA' IMSplex name 12293000 * DC XL(RCL)'00000000' RC00 = use the IMSplex name 12294000 * DC CL(DSNL)'PROD.RECON3' RECON name 12295000 * DC CL(PNL)'PLEXA' IMSplex name 12296000 * DC XL(RCL)'00000000' RC00 = use the IMSplex name 12297000 * 12300000 * sample entry using wildcard - returns IMSplex name of PLEXB 12350000 * for any RECON that has a data set name that begins 12400000 * with 'TEST.RECON'. Note: no characters have significance 12450000 * after the asterisk, so 'TEST.*.SITE3' = 'TEST.*' 12500000 * 12550000 * DC CL(DSNL)'TEST.RECON*' RECON name 12600000 * DC CL(PNL)'PLEXB' IMSplex name 12650000 * DC XL(RCL)'00000000' RC00 = use the IMSplex name 12700000 * 12750000 * end of table - default exit response is not to use SCI 12800000 * for unknown RECONs. Do not change the last entry 12850000 * data set name value of '*' without making corresponding 12900000 * changes to the table search algorithm. 12950000 * 13000000 LASTNTRY EQU * 13050000 DC CL(DSNL)'*' RECON name 13100000 DC CL(PNL)' ' IMSplex name ignored with RC04 13150000 DC XL(RCL)'00000004' RC04 = no SCI registration 13200000 EJECT , 13250000 *--------------------------------------------------------------------- 13300000 * variables/constants/DSECTs 13350000 *--------------------------------------------------------------------- 13400000 DSNL EQU 44 data set name length 13450000 PNL EQU 5 IMSplex name length 13500000 RCL EQU 4 return code length 13550000 * 13600000 PTENT DSECT PLEXTABL entry DSECT 13650000 DSN DS CL(DSNL) data set name 13700000 PN DS CL(PNL) associated IMSplex name 13750000 RC DS CL(RCL) associated return code 13800000 EL EQU *-PTENT PLEXTABL entry length 13850000 * 13900000 REQUATE register equates 13950000 END , 14000000