CLP (Control Language Program) è un linguaggio di scripting eccezionalmente potente che permette di automatizzare operazioni su IBM-i (conosciuto anche come AS400).
Seppur potente, non copre proprio tutto tutto, e spesso va affiancato ad altri strumenti quali script SH *nix-like, che permette a chi viene da sistemi Linux o Unix di poter creare cose molto interessanti.
Qui di seguito un esempio di programma che intercetta l’output di uno script SH che può essere utilizzato come variabile all’interno di un programma CLP:
PREMESSA: sulla macchina deve essere presente 5770-SS1 – Portable Application Solutions Environment.
Per intercettare il STDOUT va creata una variabile di sistema tramite il comando:
ADDENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(STDOUT) LEVEL(*JOB)
Esempio di programma:
PGM
DCLF FILE(QTEMP/O1)
DLTF FILE(QTEMP/O1)
MONMSG MSGID(CPF2105)
CRTPF FILE(QTEMP/O1) RCDLEN(1000)
OVRDBF FILE(STDOUT) TOFILE(QTEMP/O1)
STRQSH CMD('SH path dello script')
DLTOVR FILE(*ALL)
RCVF
MONMSG MSGID(CPF0864)
SNDPGMMSG MSG(&O1)
ENDPGM
Questo esempio:
– scrive sul file QTEMP/O1 tramite OVRDBF l’output dello script SH
– tramite RCVF del file QTEMP/O1 può essere letto il campo appena scritto come variabile &O1
Letteratura a supporto
https://www.ibm.com/docs/en/i/7.2?topic=reference-calling-qshell-commands-from-i-command-line