H
* Décalage à gauche d'une chaîne de caractères commençant par* des blancs ou zéros. Ce module n'est pas optimisé pour de* TRES longues chaînes de caractères
E TDG 32 1
E UDG 32 1
* WLONG doit être égal à la dimension des tableaux TDG & UDG
I DS
I I 32 1 60WLONG
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
C *ENTRY PLIST
C PARM TDG
*
C 1 DO WLONG I 60
* Cherche premier caractère non égal à blanc ou zéro
C TDG,I IFNE *BLANK
C TDG,I ANDNE'0'
* Trouvé (inutile si premier car. non nul)
C I IFNE 1
* UDG est censé être à blanc au départ (ainsi la partie* finale qu'on déplace se trouve à blanc)
C MOVEATDG,I UDG
C MOVEAUDG TDG
C ENDIF
*
C LEAVE
C ENDIF
*
C ENDDO
*
C RETRN
Décorticage d’un fichier CSV recu sur l’AS/400
Application en RPG 3 imposé. On en trouve encore. J’ai suggéré
l’utilisation d’une commande d’importation ; pour des raisons
inconnues, ce fut repoussé.
Bien sûr, une ligne de REXX peut faire ça ;
mais des IBMistes de plus de vingt ans équarquillent les yeux en entendant ce nom.
Avec prise en compte de 3 zones numériques, toutes de 5 chiffres (champs 10, 13 et 14
dans cet exemple).
* Informations d'abord mises dans les postes d'un tableau
E TZ 32 32
E T5 5 1
…
C Z-ADD1 P1 20
C Z-ADD0 P2 20
C Z-ADD0 LG 20
C Z-ADD0 NZ 20
C CLEARTZ
*
C DO *HIVAL
*
C MOVE *BLANK T5
C MOVE *BLANK Z32 32
C ';' SCAN FILLER:P1 P2 50
C N50 ' ' CHEKRFILLER P2
C N50 ADD 1 P2
*
C ADD 1 NZ
C P2 SUB P1 LG 99
* N99 <=> LG=0 i.e. deux ";" côte à côte
C *IN99 IFEQ '1'
C LG SUBSTFILLER:P1 Z32
* Zônes numériques
C NZ IFEQ 10
C NZ OREQ 13
C NZ OREQ 14
C ' ' CHEKRZ32 P3 20
C 6 SUB P3 I 60 99
C *IN99 IFEQ '1'
C MOVEAZ32 T5,I
C MOVEAT5 TZ,NZ
C ENDIF
* Zônes alpha.
C ELSE
C MOVELZ32 TZ,NZ
C ENDIF
C ENDIF
*
C N50 LEAVE
*
C P2 ADD 1 P1
C ENDDO
Il y a mieux que QCMDEXC
The advantage of using the QCAPCMD versus QCMDEXC is that you can pass the error code parameter. The error code parameter allows you to check for any errors that can occur on the command.
fnewfile if e k disk usropn
dcommand s 40 inz(' ')
dcmdlng s 10i 0 inz(40)
docb ds
d type 10i 0 inz(0)
d DBCSdh 1 inz('0')
d prompt 1 inz('0')
d cmdsyntax 1 inz('0')
d msgrtvkey 4 inz(x'00000000')
d reserve1 9 inz(x'000000000000000000')
docblength 10i 0 inz(x'00000014')
docbfmt 8 inz('CPOP0100')
dchgcmd 1 inz(' ')
dlngchgcmd 10i 0 inz(0)
dlngchgrtn 10i 0 inz(0)
d/COPY QSYSINC/QRPGleSRC,QUSEC
d qused01 17 116
c eval command = 'OVRDBF NEWFILE SHARE(*YES)'
c Z-ADD 116 QUSBprv
c call 'QCAPCMD'
c parm command
c parm cmdlng
c parm ocb
c parm ocblength
c parm ocbfmt
c parm chgcmd
c parm lngchgcmd
c parm lngchgrtn
c parm QUSEC
c QUSBavl ifgt 0
c 'Error on API'DSPLY
c qusei dsply
c end
c open newfile
c *loval setll fmt1
c read fmt1 30
c *in30 ifeq '0'
c fld1 dsply
c else
c 'No Records' dsply
c end
c close newfile
c eval *INLR = '1'
DDS for newfile:
R FMT1
FLD1 10
FLD2 10
K FLD1
DFU – avoir le listing des modifications/suppressions QPDZDTALOG
Il y a une option audit à modifier. Pour cela,
passer par la création d’un programme DFU quelconque (le fameux BIDON par ex.).
DFU [Entrée]
2. Création d'un programme DFU [Entrée]
Entrer le nom qu’on donne au programme, et le fichier qui sera concerné
(doit exister).
Ecran « Fichier (non) indexé - Généralités » : renseigner
à O le champ Liste de contrôle.
Valider. Si c’est un programme « bidon » qu’on
a créé, le supprimer.