LA COMMANDE CPYF ---------------- La commande CPYF permet de copier les enregistrements d'1 fichier dans 1 autre fichier (par défaut à condition qu'ils aient la même description de zones). CPYF FROMFILE(nom du fichier à copier) TOFILE(nom du fichier de destination, si vous voulez copier les enregistrements sur papier, spécifiez *LIST) FROMMBR(nom du membre à copier, par défaut *FIRST) TOMBR(nom du membre de destination par défaut *FIRST) |
MBROPT(option sur le membre, si vous voulez remplacer les enregistrements du fichier de destination par ceux du fichier à copier *REPLACE, si vous voulez ajouter les enregistrements du fichier copier à ceux du fichier de destination *ADD, par défaut *NONE aucune option) CRTFILE(indique si vous voulez créer votre fichier de destination *YES pour créer, *NO pour ne pas créer) RCDFMT(si votre fichier à copier est un fichier logique multiformat vous indiquerez le format à copier, *ALL si vous voulez les copier tous, par défaut *only le seul) FROMRCD(permet de sélectionner certains enregistrements par leurs numéros, vous indiquerez le numéro du premier enregistrement à copier) |
TORCD(le numéro du dernier enregistrement à copier) FROMKEY(permet de sélectionner certains enregistrements par leurs clés, vous indiquerez le nombre de zones clés et la valeur de la 1ère clé à copier) TOKEY(le nombre de zones clés et le valeur de la dernière clé à copier) NBRRCDS(le nombre d'enregistrements à copier) INCCHAR(permet de sélectionner des enregistrements en comparant le contenu d'une partie de l'enre- gistrement) INCREL(permet de sélectionner des enregistrements en comparant le contenu d'une ou plusieurs zones) |
FMTOPT(permet d'indiquer des options sur le format, par défaut *NONE il comparera le format du fichier à copier à celui de destination si il existe des différences il empechera la copie, si vous voulez le copier sans aucune vérification spécifier *NOCHK ATTENTION il copiera les enregis- trements et les cadrera de gauche à droite, *MAP *DROP permet la copie entre 2 fichiers qui n'ont pas tout à fait le même format il copiera les zones ayant le même nom *MAP et laissera tomber les autres *DROP |
EX: Supposons pour le fichier FROM le format suivant: ! A ! B ! C ! D ! E ! --------------------- Pour le fichier TO :! C ! A ! F ! ------------- Il ne copiera que les zones A et C dans les enregistrements du fichier TO et initialisera F à blanc si elle est alphanum à 0 si elle est num.) ! A ! B ! C ! D ! E ! --------------------- ! # ----- # ! # ! ! C ! A ! F ! <-- Initialisée ------------- |
OUTFMT(si vous copier sur papier ce paramètre vous permet d'indiquer si vous imprimerez les caractéres en EBCDIC *CHAR ou en héxa décimal *HEX) Quelques exemples de copie: Copie du fichier A sur imprimante: CPYF FROMFILE(A) TOFILE(*PRINT) Copie du fichier B sur imprimante il contient des zones packées je ferai la copie en hexa: CPYF FROMFILE(B) TOFILE(*PRINT) OUTFMT(*HEX) |
Copie du fichier C dans le fichier D avec remplacement des enregistrements: CPYF FROMFILE(C) TOFILE(D) MBROPT(*REPLACE) Copie du fichier C dans le fichier D avec ajout des enregistrements: CPYF FROMFILE(C) TOFILE(D) MBROPT(*ADD) |
Supposons maintenant que vous voulez modifier le fichier E en lui ajoutant une zone. Il va falloir le recompiler donc avant le supprimer (vous perdez les données).Si vous voulez conserver les données voici la démarche à suivre. 1 Conserver les enregistrements dans un autre fichier. CPYF FROMFILE(E) TOFILE(STAGIAIRXX/EBIS) + CRTFILE(*YES) 2 modifier le source et recompiler E. 3 recopier les données conservées dans le nouveau fichier E qui n'a plus exactement le même format. CPYF FROMFILE(EBIS) TOFILE(E) MBROPT(*REPLACE) + FMTOPT(*MAP *DROP) |
copie de F sur papier des enregistrement 10 à 25: CPYF FROMFILE(F) TOFILE(*PRINT) FROMRCD(10) TORCD(25) copie de G dans H des enregistrements de la clé NOPAYS 100 à la clé 150 avec remplacement des enregistrements de H: CPYF FROMFILE(G) TOFILE(H) MBROPT(*REPLACE) + FROMKEY(1 (100)) TOKEY(1 (150)) Supposons le même exemple que précedemment avec la zone NOPAYS packée de 2 octets (3 caractéres), il faut indiquer la valeur de la clé hexadécimale: CPYF FROMFILE(G) TOFILE(H) MBROPT(*REPLACE) + FROMKEY(1 (X'100F')) TOKEY(1 (X'150F')) |
copie de I dans J des enregistrements qui ont dans la zone DEPT 44 et dans VILLE NANTES: CPYF FROMFILE(I) TOFILE(J) MBROPT(*REPLACE) + INCREL((*IF DEPT *EQ 44) (*AND VILLE *EQ + 'NANTES')) avec impression des enregistrements copiés: CPYF FROMFILE(I) TOFILE(J) MBROPT(*REPLACE) PRINT(*COPIED) + INCREL((*IF DEPT *EQ 44) (*AND VILLE *EQ + 'NANTES')) avec impression des enregistrements exclus: CPYF FROMFILE(I) TOFILE(J) MBROPT(*REPLACE) PRINT(*EXCLD) + INCREL((*IF DEPT *EQ 44) (*AND VILLE *EQ + 'NANTES')) |