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