« COBOL/Sous-programmes » : différence entre les versions
Contenu supprimé Contenu ajouté
catégorisation - Modif. navigateur chapitre |
mAucun résumé des modifications |
||
Ligne 17 :
Considérons un programme principal (appelant) a et un programme secondaire (appelé) b. Le programme a fait appel au programme b en utilisant l'instruction CALL :
<source lang="cobol">
où prg est le nom du programme appelé, par exemple dans notre cas, nous mettrons "b".
Ligne 34 ⟶ 35 :
Les variables passées en paramètre doivent être définies dans la LINKAGE SECTION de la DATA DIVISION (juste après la WORKING-STORAGE SECTION) du sous-programme appelé. Ces définitions doivent être identiques à celles des variables originales (définies dans le programme appelant), à ceci près que la clause VALUE ne peut être utilisée.
<source lang="cobol">
Vous devez également préciser dans la PROCEDURE DIVISION du programme appelé une clause USING permettant d'énumérer ces variables : leur ordre d'apparition est important, il doit correspondre à l'ordre utilisé lors de l'appel du sous-programme (l'instruction CALL).
Il n'est pas nécessaire que les variables aient le même nom dans le programme appelant et le programme appelé. La correspondance des arguments entre les 2 programmes ne se fait pas sur leur nom mais sur leur ordre d'apparition.
Ligne 52 ⟶ 54 :
La première façon de faire est de définir les sous-programmes l'un après l'autre. Voici par exemple la définition d'un programme a puis la définition d'un programme b.
<source lang="cobol">
000006 CALL "b".▼
000007 DISPLAY "Vous êtes de retour dans A". b est appelé par a, l'instruction STOP RUN (qui met fin à l'exécution) est remplacée par EXIT PROGRAM qui marque la fin du sous-programme.
Ligne 76 ⟶ 79 :
La seconde façon de faire est d'imbriquer la définition du sous-programme appelé dans celle du sous-programme appelant :
<source lang="cobol">
000015 END PROGRAM a.▼
000015 END PROGRAM a.</source>
Ici, la définition du sous-programme b est imbriquée dans celle du sous-programme a : elle est placée entre le STOP RUN qui marque la fin de l'exécution (en clair : après la dernière instruction) et le END PROGRAM qui marque la fin du programme.
Ligne 100 ⟶ 104 :
Voici un programme dans lequel nous définissons un sous-programme max (lignes 15 à 29), appelé à partir du programme principal a (lignes 1 à 13).
<source lang="cobol">
000005 77 x PIC 999 VALUE 34.▼
000011 DISPLAY "max (" x "," y ") = " max.
▲ 000013 END PROGRAM a.
000019 77 a PIC 999.▼
000025 THEN MOVE a TO max Nous passons 3 variables à notre sous-programme : 2 que nous ne modifierons pas et que nous passerons donc par valeur, et une dernière qui prendra la valeur du maximum des deux autres que nous passerons par référence.
|