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

Contenu supprimé Contenu ajouté
Guillpetiot (discussion | contributions)
mAucun résumé des modifications
m Robot : Changement de type cosmétique
Ligne 16 :
L'utilisation de sous-programme permet de réutiliser du code : plutôt que de réécrire plusieurs fois le même traitement (le même code), faites plusieurs appels à un même sous-programme. C'est de la programmation procédurale. Un sous-programme permet d'effectuer un traitement particulier (défini par les instructions COBOL qui le composent), vous pouvez lui passer plusieurs arguments en paramètre : lors de son appel, précisez les variables que votre sous-programme pourra utiliser, elles constitueront l'environnement d'exécution du programme et permettront de modifier le résultat de son exécution (il en est de même pour les fonctions mathématiques).
 
== Appel d'un sous-programme ==
 
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> :
Ligne 39 :
* Si vous n'avez pas besoin de modifier la valeur d'un argument, passez-le par valeur.
 
== Concernant le programme appelé ==
 
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.
Ligne 65 :
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.
 
== Structure des sous-programmes ==
 
Il y a deux manières de découper un programme en plusieurs sous-programmes.
 
=== Code séparé ===
 
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'''.
Ligne 99 :
'''b''' est appelé par '''a''', l'instruction <code>STOP RUN</code> (qui met fin à l'exécution) est remplacée par <code>EXIT PROGRAM</code> qui marque la fin du sous-programme.
 
=== Code imbriqué ===
 
La seconde façon de faire est d'imbriquer la définition du sous-programme appelé dans celle du sous-programme appelant :
Ligne 129 :
Cette façon de faire est utile si l'usage du sous-programme '''b''' se limite au programme '''a'''.
 
== Exemple : MAX de deux entiers ==
 
Voici un programme dans lequel nous définissons un sous-programme '''max''' (lignes 15 à 29), appelé à partir du programme principal '''a''' (lignes 1 à 13).