This example creates a program temporary fix exit program.
This example exit program covers the following possible changes in the logical state of the PTF:
The example program shows where you can add your code. You can write a PTF exit program in any programming language.
Do not assume the default values for parameters on CL commands or for library lists. Users can change these values. Library lists can vary from one system to another.
/**** START OF SPECIFICATIONS *************************************/ /* */ /* LANGUAGE: CL */ /* */ /* APIs USED: None */ /* */ /* FUNCTION: */ /* THIS EXIT PROGRAM IS CALLED DURING ANY */ /* OF THE FOLLOWING CASES. */ /* */ /* APPLY TEMPORARILY - (user defined) */ /* */ /* APPLY PERMANENTLY - (user defined) */ /* */ /* REMOVE TEMPORARILY - (user defined) */ /* */ /* REMOVE PERMANENTLY - (user defined) */ /* */ /* Input: PARM1 - CHAR(7) - Product ID */ /* PARM2 CHAR(7) - PTF ID */ /* PARM3 - CHAR(6) - Product release */ /* PARM4 CHAR(4) - Product option ID */ /* PARM5 CHAR(4) - Product load ID */ /* PARM6 CHAR(10) - PTF library */ /* PARM7 CHAR(50) - User data */ /* PARM8 - CHAR(1) - Current PTF Status */ /* 0 - LOADED BUT NOT APPLIED */ /* 1 - APPLIED TEMPORARILY */ /* PARM9 CHAR(1) - PTF Operation */ /* 0 - REMOVE TEMPORARILY */ /* 1 - APPLY TEMPORARILY */ /* 2 - APPLY PERMANENTLY */ /* 3 - REMOVE PERMANENTLY */ /* 4 - PRE-REMOVE TEMPORARILY */ /* 5 - PRE-APPLY TEMPORARILY */ /* 6 - PRE-APPLY PERMANENTLY */ /* 7 - PRE-REMOVE PERMANENTLY */ /* */ /* */ /******* END OF SPECIFICATIONS ************************************/ PGM PARM(&PARM1 &PARM2 &PARM3 &PARM4 &PARM5 &PARM6 &PARM7 &PARM8 &PARM9) /*------------------------------------------------------------------*/ /* */ /* DECLARE INPUT PARAMETERS */ /* */ /*------------------------------------------------------------------*/ DCL &PARM1 TYPE(*CHAR) LEN(7) /* Product ID */ DCL &PARM2 TYPE(*CHAR) LEN(7) /* PTF ID */ DCL &PARM3 TYPE(*CHAR) LEN(6) /* Product release */ DCL &PARM4 TYPE(*CHAR) LEN(4) /* Product option ID */ DCL &PARM5 TYPE(*CHAR) LEN(4) /* Product load ID */ DCL &PARM6 TYPE(*CHAR) LEN(10) /* PTF library */ DCL &PARM7 TYPE(*CHAR) LEN(50) /* User data */ DCL &PARM8 TYPE(*CHAR) LEN(1) /* Current PTF status */ DCL &PARM9 TYPE(*CHAR) LEN(1) /* PTF operation */ /*------------------------------------------------------------------*/
/*------------------------------------------------------------------*/ /* */ /* DECLARE VARIABLES */ /* */ /*------------------------------------------------------------------*/ DCL &ACTION TYPE(*CHAR) LEN(1) /* PTF action to occur */ DCL &STATUS TYPE(*CHAR) LEN(1) /* PTF current status */ /* Handle exceptions */ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(HDLERR)) CHGVAR VAR(&ACTION) VALUE(&PARM9) /* Gets action being performed */ CHGVAR VAR(&STATUS) VALUE(&PARM8) /* Gets current PTF status */ /*----------------------------------------------------------------*/ /* THE CURRENT STATUS OF THE PTF IS "LOADED (NOT APPLIED)" */ /*----------------------------------------------------------------*/ IF (&STATUS = '0') THEN(DO) /* If PTF is loaded but not applied */ IF (&ACTION = '1') THEN(DO) /* If action is temporarily */ /* applied then */ /*?---- TEMP APPLY - ADD YOUR STATEMENTS HERE ----- */ ENDDO IF (&ACTION = '5') THEN(DO) /* If action will be temporarily */ /* apply then */ /*?---- PRE-TEMP APPLY - ADD YOUR STATEMENTS HERE ----- */ ENDDO ENDDO /* End of loading the PTF */ /*----------------------------------------------------------------*/ /* THE CURRENT STATUS OF THE PTF IS "APPLIED TEMPORARILY" */ /*----------------------------------------------------------------*/ IF (&STATUS = '1') THEN(DO) /* If PTF is temporarily */ /* applied then */ IF (&ACTION = '0') THEN(DO) /* If action is temporarily */ /* removed then */ /*?---- TEMPORARILY REMOVE - ADD YOUR STATEMENTS HERE --- */ ENDDO IF (&ACTION = '4') THEN(DO) /* If action will be temporarily */ /* remove then */ /*?---- PRE-TEMP REMOVE - ADD YOUR STATEMENTS HERE ----- */ ENDDO ENDDO /* End of remove the PTF */ /*---------------------------------------------------------------*/ /* PTF HAS BEEN SUCCESSFULLY PROCESSED */ /*---------------------------------------------------------------*/ QSYS/SNDPGMMSG MSGID(CPC1214) MSGF(*LIBL/QCPFMSG) + MSGDTA(*NONE) TOPGMQ(*PRV (* *NONE + *NONE)) TOMSGQ(*TOPGMQ) MSGTYPE(*COMP) RETURN /*----------------------------------------------------------------*/ /* HANDLE ALL ERROR CONDITIONS */ /*----------------------------------------------------------------*/ HDLERR: /* Try to back out any changes already made */ /* If nothing to back out or back-out operation was successful */ QSYS/SNDPGMMSG MSGID(CPF3638) MSGF(*LIBL/QCPFMSG) + MSGDTA(*NONE) TOPGMQ(*PRV (* *NONE + *NONE)) TOMSGQ(*TOPGMQ) MSGTYPE(*ESCAPE) /* Else the permanent changes not backed out */ QSYS/SNDPGMMSG MSGID(CPF3639) MSGF(*LIBL/QCPFMSG) + MSGDTA(*NONE) TOPGMQ(*PRV (* *NONE + *NONE)) TOMSGQ(*TOPGMQ) MSGTYPE(*ESCAPE) ENDPGM /* Return to external caller */