Les mot-clés SDD de définition d'un fichier ICF 1/ EVOKE(bib/pgm param1 param2,etc. ) bib = nom de bibliothèque (optionnel) constante ou &bibli pgm = nom du pgm (obligatoire) constante ou &pgm paramètres (facultatifs, sont passés comme avec call sur le système cible) 2/ SYNLVL(*NONE ou *CONFIRM) *NONE les demandes de confirmation ne seront pas admises *CONFIRM une demande de confirmation peut être demandée par l'émetteur avec le mot clé CONFIRM. |
3/ SECURITY(1 ! *NONE, *USER ) 2 ! constante 3 ! &variable 1 = profil utilisateur (non supporté pas AS400 cible) 2 = envoi du mot de passe 3 = envoi du USER-ID (profil sur AS/400) *NONE pas d'informations envoyées *USER Nom du profil en cours envoyé comme mot de passe SECURITY(2 ..) comme USER-ID SECURITY(3 ..) Constante ou variable, les valeurs sont envoyées. |
Ce mot clé est à rapprocher du paramètre SECURE des commande CRTDEVxxx passées sur le système cible. SECURE(*YES) le lieu est protégé (il admet que la notion de sécurité soit validée par l'interlocuteur) il est alors possible d'indiquer SECURITY(3 *USER) Le système cible envoie le profil en cours plus un AVI (flag système indiquant que le profil à déja été validé sur le système local), le pgm-cible sera alors exécuté sous ce profil. SECURE(*NO) le lieu n'admet pas les AVI il faut alors indiquer SECURITY(3 *NONE) Si le système a une entrée ADDCMNE avec un profil par défaut le pgm-cible s'exécutera sous ce profil Sinon l'intitialisation sera REJETEE. |
Dans tous les cas il est possible d'indiquer SECURITY((2 &motdepasse) (3 &profil) Le mot de passe est testé par le système cible (ce doit donc être le mot de passe du profil indiqué sur le système cible) Si le mot de passe est correct le pgm-cible est initialisé avec ce profil quelque soit la commande ADDCMNE. (seule solution avec SECURE(*NO) et pas de profil par défaut sur le système cible) Il existe une valeur intermédiaire pour la commande ADDCMNE qui est profil *SYS. Cette valeur donne un profil par défaut (QUSER) pour les pgms systèmes (DDM,Passe-Système,..) Et est équivalente à *NONE pour les pgm applicatifs. |
Envoi : WRITE d'un format . ce format peut contenir des données des mots-clés (niveau format) les deux. Les mots-clés d'envoi (valides pour un émetteur) + CONFIRM demande de confirmation de la part du système source. le pgm-émetteur va rester "bloqué" sur l'ordre WRITE jusqu'à ce qu'il recoive une réponse de la part du pgm-récepteur le pgm récepteur peut confirmer RSPCONFIRM infirmer FAIL MAIS il doit répondre dans tous les cas de figure. |
+ FRCDTA envoie des données avant saturation de la mémoire-tampon + ALWWTR (allow write) le pgm indique la fin des envois de sa part et donc l'autorisation pour le pgm-récepteur de passer en mode envoi. (à un instant T, il n'y a qu'un récepteur et un émetteur et le dialogue ne peut changer de sens qu'à l'initiative du pgm émetteur(ALWWRT ou WRITE suivi d'une READ) cela va provoquer la réception d'un code TURN-ROUND par le pgm récepteur qui pourra alors envoyer (WRITE) ou terminer la transaction (DETACH). + INVITE invitation à une lecture ultérieure Cette technique est à utiliser quand un pgm dialogue avec plus d'un partenaire. il peut "INVITER" chaque partenaire à une lecture différée puis se mettre en attente de la PREMIERE réponse. |
Il doit alors se mettre en phase d'attente suite à INVITE en RPG et en COBOL cela est fait par un READ nom-de-fichier suite à un ou des write avec INVITE. cette phase d'attente peut être temporisée a/ par le paramètre WAITRCD( ) de la commande CRTICFF b/ par le mot-clé TIMER(HHMMSS) utilisé sur un WRITE avant le passage en phase d'attente Cette technique peut être utilisée aussi avec les écrans. Ou avec écran et fichier ICF,il est alors conseillé d'associer à l'écran et au fichier ICF une DTAQ et de se mettre en attente de réception sur cette DTAQ (CALL QRCVDTAQ). Dès qu'une réponse est disponible, la DTAQ sera chargée par le système avec les coordonnées du répondeur. Un READ nom-de-format annule l'invite. |
Se pose sur un read-avec-invite le problème du choix du format. le format par défaut est toujours le premier format du fichier ICF. le nom du format choisi est placé dans l'I-O FEDDBACK AREA. il est possible d'être plus précis: cela se précise au niveau du paramètre FMTSLT de la cde ADDICFDEVE. 1/ *PGM sélection faite par le pgm (==> READ nom-format ou format/dft) 2/ *RECID la sélection du format sera faite fonction d'un caractère de contrôle se trouvant dans les données (mot-clé RECID ) RECID(position 'caractère') Exemple: R FMT1 RECID(1 'E') ... ... R FMT2 RECID(2 'D') ... |
3/ *RMTFMT c'est le système distant qui transmet le nom de format valide uniquement sur AS/400 le système distant doit employer le mot-clé FMTNAME pour transmettre le nom du format qu'il vient d'écrire, en même temps que les données. Les mots-clés d'envoi (valides pour récepteur) + RSPCONFIRM confirmation suite à demande + FAIL notification d'un problème suite à demande de confirmation. + RQSWTR désir d'émettre le pgm ayant émis sont désir d'envoyer des données doit rester en mode réception jusqu'au TURN-ROUND (ALWWTR ou READ de la part de l'envoyeur) |
Les mots-clés de retour d'information tous ces mots-clés sont des facilités offertes par ICF pour éviter aux programmes d'avoir à gérer les codes-retour (FILE-STATUS) il positionnent tous un indicateur XX à ON. RCVCONFIRM(XX) XX ON si le pgm distant a confirmé RCVFAIL(XX) XX ON si le pgm distant a signalé une erreur(FAIL) RCVTRNRND(XX) XX ON si le pgm distant signale un changement de sens du dialogue. RCVDETACH(XX) XX ON si le pgm distant a émis un ordre DETACH (fin de transaction) |