**** START OF SPECIFICATIONS ***************************************** 00010000 *01* MODULE NAME = APSUX07Y * 00020000 * * 00030000 * $MOD (APSUX07Y) COMP(APS) PROD(PSF) : VERSION 3.2.0 * 00040000 * * 00050000 *01* DESCRIPTIVE NAME = RESOURCE EXIT - SAMPLE 2 * 00060000 * * 00070000 *01* STATUS = VERSION 3, RELEASE 2, LEVEL 0 * 00080000 * * 00090000 *01* FUNCTION = * 00100000 * DEMONSTRATE POSSIBLE USES OF THE RESOURCE EXIT * 00110000 * - SET EXIT INVOLVEMENT BASED ON THE PRINTER * 00120000 * - SET THE RRLV FOR PAGE SEGMENTS TO 1 * 00130000 * - SUBSTITUTE FOR A PAGE SEGMENT AND ADD TEXT TO THE MESSAGE * 00140000 * - MARK THE PAGE SEGMENT AS A PRIORITY LEVEL RESOURCE * 00150000 * - SUBSTITUTE FOR A PAGEDEF WITH NO MESSAGE * 00160000 * - KEEP A SPECIFIC OVERLAY IN THE PRINTER. * 00170000 * * 00180000 *02* OPERATION = * 00190000 * * 00200000 * * 00210000 *01* NOTES = * 00220000 *02* DEPENDENCIES = NONE * 00230000 *02* RESTRICTIONS = NONE * 00240000 *02* REGISTER CONVENTIONS = * 00250000 * SEE REGISTER EQUATES * 00260000 * * 00270000 *01* MODULE TYPE = PROCEDURE * 00280000 *02* PROCESSOR = ASSEMBLER * 00290000 *02* ATTRIBUTES = REENTRANT * 00300000 * AMODE 31 * 00310000 * RMODE ANY * 00320000 * * 00330000 *01* ENTRY POINT = APSUX07 * 00340000 *02* LINKAGE = * 00350000 * R15 = ENTRY POINT ADDRESS * 00360000 * R13 = SAVE AREA ADDRESS * 00370000 * R1 = ADDRESS OF A 4 BYTE FIELD WHICH CONTAINS THE ADDRESS * 00380000 * OF APSGEXTP * 00390000 * * 00400000 *01* INPUT = * 00410000 * APSGEXTP - PSF INSTALLATION EXIT PARAMETER AREA * 00420000 * * 00430000 *01* OUTPUT = NONE * 00440000 * * 00450000 *01* EXIT NORMAL = RETURN TO CALLER * 00460000 * * 00470000 *01* EXIT ERROR = NONE * 00480000 * * 00490000 *01* EXTERNAL REFERENCES = * 00500000 *02* ROUTINES = NONE * 00510000 *02* DATA AREAS = * 00520000 * APSGEXTP - PSF INSTALLATION EXIT PARAMETER AREA * 00530000 * APSUECA - PSF EXIT COMMUNICATIONS AREA * 00540000 * APSURLST - PSF EXIT RESOURCE LIST AREA * 00550000 * IAZJSPA - JES SEPARATOR PAGE AREA * 00560000 *02* INCLUDES = NONE * 00570000 * * 00580000 *01* MACROS = NONE * 00590000 * * 00600000 *01* MESSAGES = NONE * 00610000 * * 00620000 * 01* CHANGE ACTIVITY = * 00630000 *$01=OY12583, HAF1203, 022988, BJ13SDJ: RESOURCE EXIT * 00640000 *$H3=LAPS0003,HAF1220, 040188, BJ13SDJ: RELEASE 2.1 @H3A* 00650000 *$02=OY14561, HAF1203, 061488, TUCGS: ADD MSG & RESOURCE EXIT @02A* 00660000 * SAVE AREAS @02A* 00670000 * $03=OY20334, HAF1220, 890406, BJ13SDJ: 3800 HARDWARE DFLT FONT @03A* 00680000 *$H5=LAPS0005,HPRF102, 033189, B53KEMC: REL 2.1.0 NEW FUNCT @H5A* 00690000 *$DU=LAPS0007,HPRF310,980604,BDKURLB: Version 3.1.0 @DUA* 00700000 *$DX=LAPS0008,HPRF320,991117,BUQ4RLB: Version 3.2.0 @DXA* 00710000 * * 00720000 **** END OF SPECIFICATIONS ******************************************* 00730000 APSUX07 START 0 00740000 TITLE 'DSECT - GEXTP' 00750000 APSGEXTP LIST=YES 00760000 TITLE 'DSECT - UECA' 00770000 APSUECA LIST=YES 00780000 TITLE 'DSECT - RLST' 00790000 APSURLST LIST=YES 00800000 TITLE 'DSECT - JSPA' 00810000 IAZJSPA LIST=YES 00820000 TITLE 'APSUX07 - INSTALLATION EXIT 7 - RESOURCE EXIT' 00830000 APSUX07 CSECT 00840000 APSUX07 AMODE 31 @H5A 00850000 APSUX07 RMODE ANY @H5A 00860000 USING APSUX07,R15 00870000 B START 00880000 DC CL8' APSUX07' NAME OF THIS ROUTINE 00890000 DC CL8'&SYSDATE' DATE OF THIS ASSEMBLY 00900000 ********************************************************************** 00910000 * STANDARD ENTRY LINKAGE * 00920000 ********************************************************************** 00930000 START STM R14,R12,12(R13) SAVE CALLERS REGISTERS 00940000 LR R12,R15 SAVE BASE REGISTER 00950000 DROP R15 DROP OLD BASE 00960000 USING APSUX07,R12 SET NEW ADDRESSABILITY 00970000 ********************************************************************** 00980000 * GET BASING FOR CONTROL BLOCKS * 00990000 ********************************************************************** 01000000 USING APSGEXTP,GEXTPTR SET ADDRESSABILITY TO GEXTP 01010000 USING XTP7,XTP7PTR SET ADDRESSABILITY TO XTP7 01020000 USING APSUECA,ECAPTR SET ADDRESSABILITY TO APSUECA 01030000 USING APSURLST,RLSTPTR SET ADDRESSABILITY TO APSURLST 01040000 USING IAZJSPA,JSPAPTR SET ADDRESSABILITY TO IAZJSPA 01050000 L GEXTPTR,0(,R1) LOAD ADDRESS OF GEXTP 01060000 L XTP7PTR,XTPRECP LOAD ADDRESS OF XTP7 01070000 L ECAPTR,XTPECAP LOAD ADDRESS OF ASPUECA 01080000 L RLSTPTR,XTP7LSTP LOAD ADDRESS OF APSURLST 01090000 L JSPAPTR,XTPJSPAP LOAD ADDRESS OF IAZJSPA 01100000 LR R3,R13 SAVE CALLERS SAVEAREA ADDR @02C 01110000 ST R3,ECARSCSV+4 IN OUR BACKWARD CHAIN. @02C 01120000 LA R13,ECARSCSV SAVE OUR SAVEAREA ADDRESS @02C 01130000 ST R13,8(R3) IN CALLER'S FORWARD CHAIN. @02C 01140000 ********************************************************************** 01150000 * DETERMINE WHAT TYPE OF CALL IS BEING MADE TO THE EXIT * 01160000 ********************************************************************** 01170000 CALLTYPE EQU * 01180000 TM XTP7ETYP,INITCALL INITIALIZATION CALL? 01190000 BO INITRTN YES, GOTO INIT ROUTINE 01200000 TM XTP7ETYP,ACCCALL RESOURCE ACCESS TIME CALL? 01210000 BO ACCRTN YES, GOTO ACCESS ROUTINE 01220000 TM XTP7ETYP,DSECALL RESOURCE DELETIONS AT DSE CALL? 01230000 BO DSERTN YES, GOTO DSE ROUTINE 01240000 B GETOUT NO MATCH FOUND - POSSIBLE ERROR 01250000 ********************************************************************** 01260000 * INITIALIZATION ROUTINE: * 01270000 * FUNCTION: 01280000 * - REQUEST CONTROL AT ACCESS TIME FOR PAGE SEGMENTS 01290000 * - SET THE RRLV FOR SEGMENTS TO 1 01300000 * - REQUEST CONTROL AT ACCESS TIME FOR PAGEDEFS (3800 ONLY) 01310000 * - REQUEST CONTROL AT DELETE TIME FOR OVERLAYS (PRT000 ONLY) 01320000 ********************************************************************** 01330000 INITRTN EQU * 01340000 MVI XTP7NACC,B'00001000' REQUEST CONTROL AT ACCESS TIME 01350000 * FOR PAGE SEGMENTS (ALL PRINTERS) 01360000 MVC XTP7RPS,ONE SET THE RRLV FOR SEGMENTS TO 1 01370000 INITLBL1 CLC XTP7FMLY,PRT3800 IS THIS A 3800 PRINTER? 01380000 BNE INITLBL2 NO, GOTO LABEL 2 01390000 OI XTP7NACC,B'10000000' REQUEST CONTROL AT ACCESS TIME 01400000 * FOR PAGEDEFS (3800'S ONLY) 01410000 MVI XTP7RFLG,B'00010000' TELL THE 3800 TO USE THE FIRST 01420000 * FONT IN THE CURRENT FONT LIST 01430000 * FOR THE HARDWARE DEFAULT @03A 01440000 INITLBL2 CLC XTP7PNAM,FORMSPRT IS THIS THE FORMS PRINTER? 01450000 BNE INITEXIT NO, OK TO LEAVE 01460000 MVI XTP7NDEL,B'00010000' REQUEST CONTROL AT DELETE TIME 01470000 * FOR OVERLAYS (FORMS PRTR ONLY) 01480000 INITEXIT EQU * 01490000 B GETOUT EXIT APSUX07 01500000 ********************************************************************** 01510000 * ACCESS ROUTINE: * 01520000 * FUNCTION: * 01530000 * - SUBSTITUTE FOR A PAGEDEF AND DO NOT ISSUE A MESSAGE. * 01540000 * - SUBSTITUTE FOR A PAGE SEGMENT, ISSUE THE SUBSTITUTION * 01550000 * MESSAGE AND ADD OPTIONAL TEXT TO THE MESSAGE. * 01560000 * - MARK THE SEGMENT AS A PRIORITY LEVEL RESOURCE (PLR) * 01570000 * NOTES: * 01580000 * - PAGEDEFS (& FORMDEFS) NEVER HAVE MORE THAN 1 RLST ENTRY AT * 01590000 * ACCESS TIME. * 01600000 * - PAGE SEGMENTS, OVERLAYS AND FONTS MAY HAVE MORE THAN ONE * 01610000 * RLST ENTRY IN THE CHAIN AT ACCESS TIME. * 01620000 * - IF RLSTMSGP OR RLSTMSGL ARE 0, NO MESSAGE INSERT WILL BE * 01630000 * ADDED TO THE SUBSTITUTION MESSAGE. * 01640000 * - MARKING THIS SEGMENT AS A PLR AND THE SETTING OF THE SEGMENT * 01650000 * RRLV TO 1 IN THE INIT ROUTINE WILL RESULT IN THIS SEGMENT * 01660000 * BEING RETAINED AT DATA SET BOUNDARIES. * 01670000 ********************************************************************** 01680000 ACCRTN EQU * 01690000 TM XTP7RTYP,PDEF IS THIS CALL FOR PAGEDEFS? 01700000 BO ACCPDEF YES, GOTO PAGEDEF ROUTINE 01710000 TM XTP7RTYP,PSEG IS THIS CALL FOR SEGMENTS? 01720000 BO ACCPSEG YES, GOTO PAGEDEF ROUTINE 01730000 B ACCEXIT NO MATCH FOUND - POSSIBLE ERROR 01740000 ********************************************************************** 01750000 * ACCESS ROUTINE FOR PAGEDEFS: * 01760000 * - SHOULD ONLY GET HERE WHEN PRINTER IS A 3800 (SEE INITRTN) * 01770000 ********************************************************************** 01780000 ACCPDEF EQU * 01790000 CLC RLSTNAME,OLDPDEF IS THIS THE OLD PAGEDEF? 01800000 BNE ACCEXIT NO, LEAVE APSUX07 01810000 MVC RLSTNAME,NEWPDEF YES, REPLACE WITH THE NEW PDEF 01820000 NI RLSTAFLG,B'10111111' DON'T GIVE SUBSTITUTION MESSAGE 01830000 B ACCEXIT OK TO LEAVE APSUX07 01840000 ********************************************************************** 01850000 * ACCESS ROUTINE FOR PAGE SEGMENTS: * 01860000 ********************************************************************** 01870000 ACCPSEG EQU * 01880000 CLC RLSTNAME,OLDLOGO IS THIS THE OLD COMPANY LOGO? 01890000 BNE NEXTPSEG NO, GET NEXT RLST ENTRY 01900000 MVC RLSTNAME,NEWLOGO YES, REPLACE WITH THE NEW LOGO 01910000 OI RLSTSTAT,B'00010000' MARK THIS SEGMENT AS A PLR 01920000 OI RLSTAFLG,B'01000000' GIVE SUBSTITUTION MESSAGE 01930000 * ADD THE OPTIONAL MESSAGE TEXT TO THE SUBSTITUTION MESSAGE 01940000 LA R11,MESSAGE LOAD ADDRESS OF MESSAGE TEXT 01950000 ST R11,RLSTMSGP PUT ADDRESS INTO MSG POINTER 01960000 MVC RLSTMSGL,MSGLNGTH MOVE LENGTH OF MESSAGE INSERT 01970000 B ACCEXIT OK TO LEAVE ONCE SEGMENT FOUND 01980000 NEXTPSEG EQU * 01990000 CLC RLSTNEXT,ZERO IS THERE ANOTHER RLST? 02000000 BE ACCEXIT NO, OK TO LEAVE 02010000 L RLSTPTR,RLSTNEXT YES, NOVE POINTER TO NEXT RLST 02020000 B ACCPSEG BRANCH TO CHECK THE NEXT PSEG 02030000 ACCEXIT EQU * 02040000 B GETOUT EXIT APSUX07 02050000 ********************************************************************** 02060000 * DATA SET END ROUTINE: * 02070000 * - ALL RESOURCE TYPES ARE LIKELY TO HAVE MULTIPLE ENTRIES IN THE * 02080000 * RLST CHAIN AT DELETE TIME. * 02090000 ********************************************************************** 02100000 DSERTN EQU * 02110000 TM XTP7RTYP,OVLY IS THIS CALL FOR OVERLAYS? 02120000 BO DSEOVLY YES, GOTO OVERLAY ROUTINE 02130000 B DSEEXIT NO MATCH FOUND - POSSIBLE ERROR 02140000 ********************************************************************** 02150000 * DELETION ROUTINE FOR OVERLAYS: * 02160000 * FUNCTION: * 02170000 * - TELL PSF TO KEEP THE OVERLAY OVER DATA SET BOUNDARIES. * 02180000 * ALL OTHER OVERLAYS WILL BE DELETED. * 02190000 * NOTES: * 02200000 * - THIS OVERLAY DELETE ROUTINE IS ACTIVE ONLY FOR THE PRINTER * 02210000 * PRT000, SEE THE INIT ROUTINE. * 02220000 * - THIS CODE WILL TELL PSF TO KEEP THE OVERLAY ACROSS DATA * 02230000 * SET BOUNDARIES. PSF WILL ATTEMPT TO RETAIN ALL FONTS * 02240000 * AND PAGE SEGMENTS THAT WERE MAPPED IN THIS OR ANY OTHER * 02250000 * OVERLAY USED IN THIS DATA SET. ON PRINTERS THAT DO NOT * 02260000 * SUPPORT SELECTIVE DELETION OF SEGMENTS (THE 3800), PSF * 02270000 * MAY NOT BE ABLE TO RETAIN THE OVERLAY. SEE THE IBM * 02280000 * PUBLISHED DOCUMENTATION ON THE RESOURCE EXIT FOR MORE * 02290000 * INFORMATION ON THIS CONDITION. * 02300000 ********************************************************************** 02310000 DSEOVLY EQU * 02320000 * TO KEEP THE OVERLAY ACROSS DATA SETS INSIDE OF A JOB BUT DELETE IT 02330000 * AT THE END OF THE JOB, BYPASS THIS CODE IF XTP7PLDS IS SET. 02340000 CLC RLSTNAME,MAINFORM IS THIS THE OVERLAY? 02350000 BNE NEXTOVLY NO, GET NEXT RLST ENTRY 02360000 OI RLSTDFLG,B'10000000' YES, KEEP THIS OVERLAY 02370000 B DSEEXIT OK TO LEAVE ONCE RESOURCE FOUND 02380000 NEXTOVLY EQU * 02390000 CLC RLSTNEXT,ZERO IS THERE ANOTHER RLST? 02400000 BE DSEEXIT NO, OK TO LEAVE 02410000 L RLSTPTR,RLSTNEXT YES, NOVE POINTER TO NEXT RLST 02420000 B DSEOVLY BRANCH TO CHECK THE NEXT OVLY 02430000 DSEEXIT EQU * 02440000 B GETOUT EXIT APSUX07 02450000 ********************************************************************** 02460000 * EXIT LINKAGE * 02470000 ********************************************************************** 02480000 GETOUT L R13,ECARSCSV+4 RESTORE CALLER'S SAVEAREA ADDR @02C 02490000 LM R14,R12,12(R13) RESTORE CALLER'S REGS 02500000 BR R14 02510000 ********************************************************************** 02520000 * EXIT 7 DATA AREAS * 02530000 ********************************************************************** 02540000 MESSAGE DC CL29'HOW DO YOU LIKE THE NEW LOGO?' 02550000 MSGLNGTH DC X'1D' 02560000 ONE DC H'1' 02570000 PRT3800 DC CL4'3800' 02580000 FORMSPRT DC CL8'PRT000 ' 02590000 OLDPDEF DC CL8'P1OLD ' 02600000 NEWPDEF DC CL8'P1NEW ' 02610000 OLDLOGO DC CL8'S1OLD ' 02620000 NEWLOGO DC CL8'S1NEW ' 02630000 MAINFORM DC CL8'O1FORM ' 02640000 ZERO DC F'0' 02650000 ********************************************************************** 02660000 * EQUATES TO VERIFY TYPE OF EXIT CALL, COMPARE WITH XTP7ETYP * 02670000 ********************************************************************** 02680000 INITCALL EQU B'10000000' RESOURCE MANAGER INITIAL CALL 02690000 BDSCALL EQU B'01000000' BEGINNING OF DATA SET CALL 02700000 ACCCALL EQU B'00100000' RESOURCE ACCESS 02710000 LDBCALL EQU B'00010000' RESOURCE LOAD BEGIN 02720000 LDECALL EQU B'00001000' RESOURCE LOAD END 02730000 DSECALL EQU B'00000100' RESOURCE DELETE AT DATA SET END 02740000 TRMCALL EQU B'00000010' TERMINATION OF FSA 02750000 ********************************************************************** 02760000 * EQUATES TO VERIFY TYPE OF RESOURCE CALL, COMPARE WITH XTP7RTYP * 02770000 ********************************************************************** 02780000 PDEF EQU B'10000000' PAGEDEF 02790000 FDEF EQU B'01000000' FORMDEF 02800000 FONT EQU B'00100000' CODED FONT 02810000 OVLY EQU B'00010000' MEDIUM OVERLAY 02820000 PSEG EQU B'00001000' PAGE SEGMENT 02830000 ********************************************************************** 02840000 * REGISTER EQUATES * 02850000 ********************************************************************** 02860000 R0 EQU 0 02870000 R1 EQU 1 02880000 R2 EQU 2 02890000 R3 EQU 3 02900000 GEXTPTR EQU 4 02910000 XTP7PTR EQU 5 02920000 ECAPTR EQU 6 02930000 RLSTPTR EQU 7 02940000 JSPAPTR EQU 8 02950000 R9 EQU 9 02960000 R10 EQU 10 02970000 R11 EQU 11 02980000 R12 EQU 12 02990000 R13 EQU 13 03000000 R14 EQU 14 03010000 R15 EQU 15 03020000 END 03030000