PROCEDURE DIVISION GENERALITES LA PROCEDURE DIVISION est la partie traitement d'un programme COBOL CONSTANTES FIGURATIVES SPACE ou SPACES -> des espaces ZERO -> des zéros LOW-VALUE -> plus petite valeur possible HIGH-VALUE -> plus grande valeur possible QUOTE -> caractère ' ALL -> rempli de ALL '*' = remplir du caractère '*' |
PROCEDURE DIVISION GENERALITES -> INSTRUCTIONS de base STOP RUN. Fin du programme. DISPLAY literal1 literal2 ... DISPLAY "Nombre de clients" NBR. ACCEPT variable. DISPLAY "Combien de fois ?". ACCEPT NBFOIS. |
PROCEDURE DIVISION GENERALITES -> INSTRUCTIONS de base ACCEPT .. FROM DATE date sur 6 (YYMMDD) DATE YYYYMMDD date sur 8 DAY date format juien DAY OF WEEK TIME ACCEPT .. FROM nom-mnémonique (voir SPECIAL NAMES) permet de lire I-O FeedBack Area Local Data Area Data Area nomminative |
PROCEDURE DIVISION GENERALITES -> INSTRUCTIONS, affectation MOVE A TO B |
PROCEDURE DIVISION GENERALITES -> INSTRUCTIONS, calcul ADD X TO y. y=y+X ADD X TO Y GIVING resultat. R=X+Y SUBSTRACT X TO Y. y=y-X SUBSTRACT X TO Y GIVING R. R=y-X MULTIPLY X BY Y. Y=X*Y MULTIPLY X BY Y GIVING R. R=X*Y DIVIDE X INTO Y Y=Y/X DIVIDE X BY Y GIVING R R=Y/X DIVIDE X BY Y REMAINDER Z Z=Modulo(Y/X) partout vous pouvez ajouter ROUNDED On SIZE ERROR ... |
COMPUTE COMPUTE R [ROUNDED] = expression arithmétique acceptant : + addition - soustraction / division * multiplicaiton ** élévation à la puissance vous pouvez aussi ajouter ( et ) chaque partie de la procédure division peut avoir un nom (ou nom de paragraphe) suivi de . ....................................................................... : si vous ne mettez aucun nom de paragraphe, le compilateur vous dira : : "LNC0884 Nom de paragraphe manquant. Accepté." : :.....................................................................: |
PROCEDURE DIVISION GENERALITES -> Conditions, instruction IF. X [IS] | [NOT] < | Y | > | | = | | >= | | <= | IF condition THEN instructions [ELSE instructions] END-IF. les tests IF acceptent AND/OR les tests IF peuvent s'imbriquer un point ferme tous les tests en cours |
PROCEDURE DIVISION GENERALITES -> instructions Fichiers OPEN input i-o >------ nom-fichier output -----> mise à blanc extended -----> en ajout, sans mise à blanc CLOSE >------ nom-fichier lecture séquentielle, accès séquentiel READ nom-fichier [with no lock] AT END ordre impératif [NOT AT END ordre impératif] END-READ. |
PROCEDURE DIVISION GENERALITES -> instructions Fichiers lecture séquentielle, accès dynamique READ nom-fichier [Next, prior, first, last] [with no lock] AT END ordre impératif [NOT AT END ordre impératif] END-READ. lecture directe, accès directe charger la zone clé, puis : READ nom-fichier [with no lock] INVALID KEY ordre impératif [NOT INVALID KEY ordre impératif] END-READ. |
PROCEDURE DIVISION GENERALITES -> instructions Fichiers Positionnement sur un fichier indexé. prépare la prochaine lecture (comme SETLL RPG) START nom-du-fichier KEY IS equal (=) greater (>) not less (not <) greater or equal (>=) EXTERNALLY-DESCRIBED-KEY ou nom de zone [INVALID KEY ordre impératif] [NOT INVALID KEY ordre impératif] END-START. Une clé partielle peut être utilisée si et seulement si, la séquence des zones clés est respectée et les noms de zone cités sont ceux définis en clause SELECT. |
PROCEDURE DIVISION GENERALITES -> instructions Fichiers REWRITE nom-enregistrement (niveau 01) [INVALID KEY ordre impératif] [NOT INVALID KEY ordre impératif] END-REWRITE. WRITE nom-enregistrement [INVALID KEY ordre impératif] [NOT INVALID KEY ordre impératif] END-WRITE. DELETE nom-fichier [INVALID KEY ORDRE IMPÉRATIF] END-DELETE. COMMIT/ROLLBACK |