« COBOL/Sous-programmes » : différence entre les versions
Contenu supprimé Contenu ajouté
mAucun résumé des modifications |
maintenance |
||
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 <code>CALL</code> :
{{définition
| contenu = <source lang="cobol"> CALL prg [USING { [REFERENCE] x y ...} ... ].
CONTENT
</source> }} Ligne 36 ⟶ 40 :
Les variables passées en paramètre doivent être définies dans la <code>LINKAGE SECTION</code> de la <code>DATA DIVISION</code> (juste après la <code>WORKING-STORAGE SECTION</code>) 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 <code>VALUE</code> ne peut être utilisée.
{{définition
| contenu = <source lang="cobol"> DATA DIVISION.
LINKAGE SECTION.
{images}
</source> }} Vous devez également préciser dans la <code>PROCEDURE DIVISION</code> du programme appelé une clause <code>USING</code> 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 <code>CALL</code>).
{{définition
| contenu = <source lang="cobol"> PROCEDURE DIVISION [USING {identificateur} ...]. </source> }} Ligne 57 ⟶ 70 :
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'''.
{{exemple
| contenu = <source lang="cobol"> 000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. a.
Ligne 74 ⟶ 89 :
000015 DISPLAY "Vous êtes dans B".
000016 EXIT PROGRAM.
000017 END PROGRAM b.
</source> }} Ligne 83 ⟶ 100 :
La seconde façon de faire est d'imbriquer la définition du sous-programme appelé dans celle du sous-programme appelant :
{{exemple
| contenu = <source lang="cobol"> 000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. a.
Ligne 98 ⟶ 117 :
000013 END PROGRAM b.
000014***********************
000015 END PROGRAM a.
</source> }} Ligne 109 ⟶ 130 :
Voici un programme dans lequel nous définissons un sous-programme '''max''' (lignes 15 à 29), appelé à partir du programme principal '''a''' (lignes 1 à 13).
{{exemple
| contenu = <source lang="cobol"> 000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. a.
Ligne 138 ⟶ 161 :
000027 END-IF.
000028 EXIT PROGRAM.
000029 END PROGRAM max.
</source> }} |