Page 1 sur 1

EXIT POINT et la commande CALL

Posté : mer. 08 juin 2016, 15:33:15
par OBR
Nous souhaitons pouvoir contrôler certains paramètres lors de n'importe quel CALL sur notre système. Pour cela, il y aurait pu avoir un EXIT POINT (QIBM_QCA_RTV_COMMAND) qui eut pu permettre de récupérer la commande. Sauf que la commande CALL est une des rares commandes a ne pas pouvoir être interceptée.

Nous avons donc tenté de créer une commande CALL personnalisée qui aurait pu se trouver dans une bibliothèque en SYSLIBL personnelle. Mais là, c'est la récupération des paramètres et donc leur restitution à la commande CALL de QSYS qui pose problème. En effet, nous arrivons à connaître le nombre de paramètres, leur contenu est concaténé, mais impossible de savoir quelle taille peut faire chaque paramètre.

Nous sommes donc à la recherche d'une idée pour intercepté la commande CALL avant qu'elle ne s'exécute pour effectuer un traitement particulier avant de lancer le CALL réel.

Merci à ceux qui auraient une idée.

CALL et VLDCKR

Posté : mer. 08 juin 2016, 16:48:04
par cmasse
Quand on définit une commande on lui associe un ppm de traitement, nommé CPP. On peut aussi lui associer un ppm chargé de vérifier la validité des paramètres AVANT le lancement du CPP, le validity checher (VLDCHK sur CRTCMD)....

Posté : jeu. 09 juin 2016, 16:52:36
par OBR
J'ai ajouté un programme dans le paramètre VLDCHK de la commande CALL. Ça n'a pas d'impact, tant que dans le paramètre PGM on y laisse les valeurs QSYS/QCLCALL.

En y plaçant un autre programme effectuant le CALL, ça fonctionne, mais on retrouve le problème du passage des paramètres, car ceux-ci ne sont pas distincts sauf si ils ont une taille inférieure à 32 caractères.

Mais plus aucune quote ne permet de déterminer le début et la fin du paramètre. La seule information fiable est le nombre de paramètres.