Est il possible en Cobol Microfocus de faire en sorte que les programmes contrôlent leurs zones de communication en retour d'appel de sous programmes ?
Exemple:
Si un pgm A appelle un pgm B avec une zone de 10 caractères mais que dans le pgm B la zone est définie sur 100 caractères, au retour de l'appel du pgm les 100 caractères vont "écraser" les zones de working suivant la zone de communication.
Pour utiliser des zones variables une solution serait de déclarer ces zones avec l'instruction "depending on".
Mais c'est un peu lourd à gérer et mettre en place...
La meilleure solution serait de trouver une option de compilation ou de runtime qui active un controle sur les zones de communication lors des call cobol.
Le problème c'est que je pense avoir fait le tour des options existantes en MicroFocus...
Quand un programme A appelle un programme B, Les zones de communication ne sont pas passées au programme B, mais ce sont leurs adresses respectives qui sont passées au programme appelé, donc leur longueur n'a aucune importance et c'est le programmeur qui doit gérer, les échanges de données, mettre un depending ne changera rien à ton problème, tu peut ajouter un filler de 90 octets aprés la zone de communication, dans le programme A ou ne traiter que les 10 premiers octets dans le programme B, pour ne rien écraser
Salut L'ami,
Quand un programme A appelle un sous programme B :
il est inexact de dire :
de dire que la longueur de la linkage n'a aucune importance.
En effet essaie pour une linkage définie avec 100 caractères d'en récupérer 106, impossible !!!!
Au même titre que si ramène des caractères alphanumériques dans une zone
déclarée en numérique, alors BOUM (Plantage).
Dans l'autre sens, si tu ne remplie que 90 caractères de ta linkage, et si celle
ci n'est pas initailisée avant l'appel du programme B, tu récupérera dans les 10 derniers caractères n'importe quoi (données présentent en mémoire à la suite de ta linkage).
D'autre part il est exact de dire que la machine transcrit en adresse tes commandes, mais franchement, ou s'en fout un peu. Nous on travaille en mode de commande, et c'est la machine qui traduit cela commande compréensible pour elle.
Il est exact de dire :
Que de toute facon, c'est le programmeur qui doit gérer cela.
Il y a fort longtemps, je me rappelle avoir utiliser ce cas de figure.
Je crois avoir déclaré en WSS une zone de linkage avec la clause DEPENDIN ON.
Et dans le CALL préciser après la zone LINKAGE du USING LENGH OF et le nom de la LINKAGE.
Cela devrait donner quelque chose comme :
En WSS :
01 ZONE-LINKAGE DEPENDING ON.
Puis CALL PGM B USING ZONLINK LENGH OF ZONLINK.
A tester
HULK77
__________________________
Ma fabrique de chemises tourne à plein régime !!!