//**** START OF SPECIFICATIONS *****************************************00010000 //* *00020000 //* MODULE NAME = APSUC07S *00030000 //* $MOD (APSUC07S) COMP(APS) PROD(PSF) : VERSION 3.3.0 *00040000 //* *00050000 //* DESCRIPTIVE NAME = RESOURCE EXIT - SAMPLE 5 *00060000 //* *00070000 //* STATUS = VERSION 3, RELEASE 3, LEVEL 0 *00080000 //* *00090000 //* FUNCTION = *00100000 //* *00110000 //* This is installation exit APSUX07S written in C. *00120000 //* *00130000 //* The only function performed by this exit is to force the reload *00140000 //* from DASD of all accessed FORMDEFs and PAGEDEFs. This *00150000 //* circumvents the PSF practice of holding the most recently used *00160000 //* FORMDEFs and PAGEDEFs in virtual storage and using the storage *00170000 //* copy if it exists. This presents a difficulty to those *00180000 //* doing testing and development on these objects, since *00190000 //* changes made to the DASD copy do not take effect until PSF is *00200000 //* forced to flush the copy in virtual storage. *00210000 //* *00220000 //* This exit is first entered on PSF initialization. On this entry *00230000 //* the exit sets flags in the XTP7NACC field to indicate that it *00240000 //* wants control whenever a PAGEDEF or FORMDEF is accessed. *00250000 //* *00260000 //* On subsequent access entries, the only action taken is to set *00270000 //* the RLSTLOAD flag in the RLSTAFLG field, which forces the load *00280000 //* of the subject resource from DASD. *00290000 //* *00300000 //* *00310000 //* NOTES = *00320000 //* DEPENDENCIES = NONE *00330000 //* RESTRICTIONS = NONE *00340000 //* *00350000 //* MODULE TYPE = PROCEDURE *00360000 //* PROCESSOR = C *00370000 //* ATTRIBUTES = REENTRANT *00380000 //* AMODE 31 *00390000 //* RMODE ANY *00400000 //* *00410000 //* ENTRY POINT = APSUC07 *00420000 //* LINKAGE = *00430000 //* One parameter which is the address of APSGEXTP is passed. *00440000 //* *00450000 //* INPUT = PARAMETER AREA (APSGEXTP) *00460000 //* *00470000 //* OUTPUT = N/A *00480000 //* EXIT-NORMAL = RETURN TO CALLER *00490000 //* EXIT-ERROR = NONE *00500000 //* *00510000 //* EXTERNAL REFERENCES = SEE BELOW: *00520000 //* ROUTINES = *00530000 //* DATA AREAS = NONE *00540000 //* CONTROL BLOCKS = (SEE MACROS LISTED BELOW) *00550000 //* *00560000 //* TABLES = NONE *00570000 //* *00580000 //* MACROS = MACROS USED FROM MACRO LIBRARY: *00590000 //* APSGEXTP - PSF INSTALLATION EXIT PARAMETER AREA *00600000 //* APSUECA - PSF EXIT COMMUNICATIONS AREA *00610000 //* APSURLST - PSF EXIT RESOURCE LIST AREA *00620000 //* *00630000 //* CHANGE ACTIVITY = *00640000 //* $B0=LAPS0008, HPRF320, 990928, BDKUAJT: Initial Version @B0A*00650000 //* $EV=LAPS0009,HPRF330,010530,BUQ4RLB: Version 3.3.0 @EVA*00660000 //* *00670000 //**** END OF SPECIFICATIONS *******************************************00680000 00690000 #pragma comment(date) 00700000 #pragma csect(CODE,"$APSUC07") 00710000 #pragma csect(STATIC,"#APSUC07") 00720000 #pragma linkage(APSUC07,OS) 00730000 #pragma runopts(TRAP(OFF)) 00740000 #pragma map(apsuc07,"APSUC07") 00750000 00760000 /*--------------------------------------------------------------------- 00770000 #include these header files for structure & constant definitions: 00780000 ---------------------------------------------------------------------*/ 00790000 00800000 #include "apsgextc.h" 00810000 #include "apsurlsc.h" 00820000 #include "apsuecac.h" 00830000 00840000 00850000 void apsuc07(APSGEXTP * xtpptr) 00860000 { 00870000 00880000 /*--------------------------------------------------------------------- 00890000 Determine what type of call is being made to the exit 00900000 ---------------------------------------------------------------------*/ 00910000 00920000 switch (xtpptr->XTPRECP.XTPRECP7->XTP7ETYP) // Select on the 00930000 // type of call 00940000 { 00950000 case XTP7INIT: // Initialization call 00960000 00970000 /*-------------------------------------------------------------- 00980000 Request control at access time for pagedefs and formdefs. 00990000 --------------------------------------------------------------*/ 01000000 01010000 xtpptr->XTPRECP.XTPRECP7->XTP7NOTY.XTP7NACC = XTP7AFD + 01020000 XTP7APD; 01030000 break; 01040000 01050000 case XTP7ACC: // Resource access call 01060000 01070000 /*-------------------------------------------------------------- 01080000 Check dataset type and don't process headers, trailers, message01090000 data sets. Set RLSTLOAD flag to force resource reload. 01100000 ------------------------------------------------------------*/ 01110000 01120000 if (xtpptr->XTPRECP.XTPRECP7->XTP7DSAT & 01130000 (XTP7PDFT + XTP7PJHD + XTP7PJTR + 01140000 XTP7PDSH + XTP7PMDS)) 01150000 ; // Null statement 01160000 else 01170000 xtpptr->XTPRECP.XTPRECP7->XTP7RLST.XTP7LSTP-> 01180000 RLSTFLGS.RLSTAFLG |= RLSTLOAD; 01190000 // Request resource 01200000 // load from DASD 01210000 break; 01220000 01230000 default: // No match found - error 01240000 break; 01250000 } // End of select on the 01260000 // type of call 01270000 return; // Return with no error 01280000 } // End of main routine 01290000 01300000