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
-
|
|
|