M3 ERP , Lawson Infor : Guide - Help : Analyse sur programmes Spéciques et Standards
Bienvenue dans « SCAN400 » Références croisées
Outil pratique d’observation de vos applications AS400
CLIQUEZ ICI Pour RETOURNER à la page IMAGE d'origine CONTENANT CE TEXTE
« SCAN400 - Références Croisées » - Détection des appels indirects
SCAN400 est capable de reconnaitre des appels Indirects de programmes.
Les appels indirects sont des appels inter programme non détectables par les procédés standards.
Par exemple:
Pour les RPG : Les appels non détectables par DSPPGMREF
Pour M3 : Les APCALL utilisant une variable plutôt qu’un littéral
La détection des appels indirects représentent en général très peu de cas (moins de 1% dans M3
ou Movex), mais rendent l'outil encore plus complet, et permettent de rendre compte de ce qui est
très spécifique à un progiciel , une entreprise, ou à une manière de coder
Exemples de détections possibles :
Des programmes M3 appelant des programmes RPGs
Des programmes RPG appelant des programmes M3
Des programmes appelant des programmes au travers d'une variable (M3 ou RPGs)
On distingue deux catégories d' appels indirects :
Les appels indirects LOGIQUES , c’est-à-dire que SCAN400 peut trouver de lui-même, sans aide
Les appels indirects SPECIFIQUES , c’est-à-dire que SCAN400 détecte grâce à un paramétrage
de reconnaissance que vous devrez fournir.
Les deux catégories d'appels indirects.
Dans les deux types d' appels indirects présentés ci dessous,
c'est le littéral 'NOM_PROGRAMME_APPELé' qui doit être détecté.:
1- Cas des appels indirects LOGIQUES - exemple :
MOVE du littéral 'NOM_PROGRAMME_APPELé' dans &VARIABLE
et plus loin dans le source :
CALL &VARIABLE
2- Cas des appels indirects SPECIFIQUES , c'est à dire propres à une manière de coder,
à un progiciel, qui seront identifiés au travers d'un PARAMETRAGE de Reconnaissance ,
saisi au préalable dans SCAN400 - exemple :
MOVE du littéral 'NOM_PROGRAMME_APPELé' dans &VARIABLE
et plus loin dans le source :
CALL 'NOM_PROGRAMME_LANCEUR' passant en paramètre &VARIABLE
Un exemple typique d'appel indirect spécifique dans M3 ou dans Movex RPG est l'appel de programmes
au travers du lanceur MNS230 : bien que les appels via MNS230 soient déjà identifié dans le moteur standard de SCAN400 pour M3, elle ne l'est pas coté RPG si vous scannez une application Movex RPG, qui nécessitera alors de paramétrer un critère de reconnaissance de cet appel indirect.
MOVEL 'GLS040CL 'PXPGM
et plus loin dans le source :
CALL 'MNS230'
PARM PXCONO
PARM ....
PARM PXPGM
Contrairement aux appels indirects spécifiques, les appels indirects logiques peuvent
être détectés par SCAN400 sans qu’il y aie besoin de lui spécifier un paramétrage.
Voici un exemple d’appel indirect logique : extrait du source SOS620 dans Movex RPG :
MOVEL 'CRS155' PROG
Ici, alimentation de la variable d’appel « PROG » avec le littéral ’ CRS155’
Et un peu plus loin dans le source..
CALL PROG
Ici, appel indirect du CRS155 au travers de la variable « PROG »
Un appel indirect s’oppose par définition, à un appel « direct » qui aurait eu la syntaxe suivante :
CALL ‘CRS155’
Après un SCAN de M3, les appels indirects (logiques ou spécifiques) seront récoltés :
Lancez la commande « M3MORE » depuis une ligne de commande AS400 pour afficher
le résultat des liens d’appel indirects identifiés, que vous pourrez valider ou invalider.
Pour détecter les appels indirects spécifiques dans M3, vous devez indiquer à
SCAN400 comment le reconnaitre, au travers du paramétrage ci-dessus ,
que vous présentera la commande M3SCAN à l’étape 3. Actionnez :
- F6 pour créer une ligne de paramétrage après avoir saisi les zones du sélecteur
- F5 « Voir Exemple » pour comprendre comment renseigner les zones. (Voir
Page suivante)
Remarque : pour saisir ce type de paramétrage, vous saisissez des CHAINEs de
Caractères. Une chaine peut contenir tout type de caractère spécial. Lors sa saisie,
le début de cette chaîne correspond au 1er caractère de la zone de saisie (qui
peut être blanc), et sa fin est le dernier caractère non blanc saisi.
(Nb : la saisie est en majuscule car le source scanné sera converti en majuscules)
Exemple : la saisie : " ABC.#DE À " est la chaîne « ABC.#DE à»