| midrange.com code scratchpad | 
				
					| 
							
								| Name:Command replacement | Scriptlanguage:Plain Text | Tabwidth:4 | Date:10/29/2019 07:52:03 pm | IP:Logged |  | 
				
					| Description:Turn off triggers before CLRPFM on a file with delete triggers. | 
				
					| Code: 
							
								
								
								| 
    The QIBM_QCA_CHG_COMMAND program.
 **FREE
        // *ENTRY
       Dcl-PI CLRTRGF ExtProc('CLRTRGF');
         changeCommandExitInfo Char(32767);
         replacementCommand Char(32000);
         replacementLength Int(10);
       END-PI;
        Dcl-Ds Chgc0100 Based(Chgc0100Pointer) Qualified;
         exitPoint Char(20);
         exitPointFormat Char(8);
         commandName Char(10);
         library Char(10);
         changeAllowed Char(1);
         prompt Char(1);
         reserved Char(2);
         commandOffset Int(10);
         commandLen Int(10);
         proxyOffset Int(10);
         proxyEntries Int(10);
       END-DS;
        Dcl-s command Char(32000) Based(commandPointer);
       Dcl-s incomingLength Int(10);
       Dcl-s replacement Char(32000);
        // Overlay CHGC0100 format on entry parm.
       Monitor;
       Chgc0100Pointer = %Addr(changeCommandExitInfo);
       On-Error;
         *Inlr = *On;
         Return;
       EndMon;
       If Chgc0100.commandName = 'CLRPFM'; // maybe check for file name here also
       // Overlay Command
       commandPointer = Chgc0100Pointer + Chgc0100.commandOffset;
       incomingLength = Chgc0100.commandLen;
        // Load original command into the replacement command
       replacement = %Subst(command:1:incomingLength);
            replacement = %Scanrpl('CLRPFM':'CLRTRGF':replacement);
        replacementCommand = replacement;
       replacementLength = %Len(%Trim(replacementCommand));
      EndIf;
        *Inlr = *On;
       Return; 
 The replacement command.
  SRTRANS:    CMD        PROMPT('CLEAR FILE WITH DELETE TRIGGER')
              PARM       KWD(FILE) TYPE(FILE) MIN(1)
             PARM       KWD(MBR) TYPE(*CHAR) LEN(10)
  FILE:       QUAL       TYPE(*NAME) LEN(10) MIN(1)
             QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +
                          SPCVAL((*CURLIB) (*LIBL)) PROMPT('Library') 
 CL to process the command.
             PGM        PARM(&FILE &MEMBER)
             DCL        VAR(&FILE) TYPE(*CHAR) LEN(20)
             DCL        VAR(&MEMBER) TYPE(*CHAR) LEN(10)
             DCL        VAR(&QUALF) TYPE(*CHAR) LEN(10)
             DCL        VAR(&QUALL) TYPE(*CHAR) LEN(10)
             CHGVAR     VAR(&QUALF) VALUE(%SST(&FILE 1 10))
             CHGVAR     VAR(&QUALL) VALUE(%SST(&FILE 11 10))
             CHGPFTRG   FILE(&QUALL/&QUALF) TRG(*ALL) STATE(*DISABLED)
             QSYS/CLRPFM FILE(&QUALL/&QUALF) MBR(&MEMBER)
             CHGPFTRG   FILE(&QUALL/&QUALF) TRG(*ALL) STATE(*ENABLED)
             ENDPGM     
  |  | 
				
					|  |