« COBOL/Sous-programmes » : différence entre les versions

Contenu supprimé Contenu ajouté
Guillpetiot (discussion | contributions)
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>
}}