O P T I M I S A T I O N F I C H I E R S E C R A N S 1/ partage de fichier à l'ouverture. Plusieurs pgm peuvent utiliser un même fichier écran. En standard chaque pgm travaille avec son ouverture de fichier (son espace de travail sa propre vue des sous-fichiers etc ...) AVEC le paramètre SHARE(*YES) (cdes CRTDSPF, CHGDSPF, OVRDSPF) des pgm d'un même job peuvent utiliser la meme ouverture. |
Exemples: a/ PGM1 appel PGM2 PGM2 remplit un sous-fichier puis retour PGM1 l'affiche appel PGM3 PGM3 lit les enregistrements modifiés pour traitement retour PGM1 b/ PGM1 affiche un format appel de PGM2 qui lit le même format (sans affichage de sa part) c/ PGM1 affiche et lit un format avec le mot-clé RTNDTA appel PGM2 qui lit le même format (PGM2 reçoit les données du format sans intervention clavier, relecture des tables système ==> passage de paramètres) d/ PGM1 (pgm CLP) affiche et lit un format avec RTNDTA appel PGM2 qui lit le même format (PGM2 (RPG par ex.) reçoit les données et l'IO-FEEDBACK-AREA, pouvant ainsi récuperer la position curseur etc...) |
2/ partage de format. Soit DSPF1 contenant FMTA FMTB FMTC DSPF2 contenant FMTB FMTD FMTE FMTF CL01 appel PGM1 (DSPF1) PGM1 affiche FMTB puis se termine (fermeture DSPF1) CL01 appel alors PGM2 (DSPF2) PGM2 voulant lire FMTB En standard quand PGM1 ferme DSPF1 FMTB disparait PGM2 ouvre DSPF2 l'écran est mis à blanc il ne peut donc pas lire FMTB sans l'afficher au préalable. |
SI pour le format FMTB de DSPF1 on utilise le mot-clé KEEP celui ci ne disparait pas à la fermeture du fichier. SI pour le format FMTB de DSPF2 on utilise le mot-clé ASSUME l'écran n'est pas mis à blanc à l'ouverture PGM2 peut alors commencer par lire FMTB resté à l'écran sans avoir à l'afficher. Il est possible de prevoir l'appel de PGM2 ne suivant pas l'appel de PGM1 avec le mot-clé INZRCD. SI quand PGM2 lit FMTB celui si ne se trouve pas à l'écran,il est initialisé (constantes affichées, zones de saisies initialisées à blanc ou zéro suivant leur type). Ceci est un bon moyen de faire des fenetres,l'écran n'étant pas mis à blanc à l'ouverture. |
3/ transmission minimale de données a/ affichage d'un format puis lectures successives,(sans affichage) GETRETAIN , UNLOCK + UNLOCK clavier non verrouillé apres la touche entrée (recouvrement des temps de saisie) + GETRETAIN données en input non réinitialisées. - UNLOCK(*ERASE) zones renseignables mises à blanc - UNLOCK(*MDTOFF) ou UNLOCK + GETRETAIN zones renseignables non effacées,MDT restaurés - UNLOCK(*MDTOFF *ERASE) zones aynt le MDT ON effacées, MDT restaurés |
3/ transmission minimale de données b/ affichages successifs d'un même format PUTRETAIN ou PUTOVR + OVRATR , OVRDTA. Soit un format affiché plusieurs fois. au premier affichage la totalité du format est envoyée à l'écran (constantes et variables) au deuxieme affichage(format toujours PRESENT à l'écran) - sans PUTOVR la totalité du format est renvoyée - avec PUTOVR + OVRDTA (niveau format) seules les variables sont renvoyées à l'écran |
Soit le format de saisie suivant *********************************************************** * AF4 Saisie des commandes fournisseur le : JJ/MM/AA * * * * * * Code frn : _______ ou nom gen* ____________________ * * adresse oooooooooooooooooooo * * Date de commande __ / __ / ____ * * * * Date de livraison __ / __ / ____ * * * * Mode de livraison __ * * * * Mode de paiement __ * * * * F3 = Exit * * * ************************************************************ L'utilisateur doit saisir soit un code soit un début de nom doit renseigner le reste de l'image. |
Si l'utilisateur saisit un code,l'image sera réaffichée avec le nom et l'adresse pour confirmation. Si l'utilisateur saisit un début de nom,appel d'un pgm avec sous-fichier pour choix du fournisseur,sélection de l'utilisateur et réaffichage pour confirmation. Lors du réaffichage du format pour confirmation, la date de livraison est affichée en haute intensité si elle dépasse de trois mois la date du jour (mais un tel délai peut être accepté par le pgm). Les données utiles à afficher lors de cette confirmation sont: - code fournisseur (si saisie d'un nom genérique) - nom et adresse (si saisie d'un code) - attribut de la zone date de livraison ET UNIQUEMENT CELLES CI. Il faut alors préciser le mot-clé PUTOVR niveau format le mot-clé OVRDTA pour les zones CODE,NOM et ADR le mot-clé OVRATR pour la zone DATLIV |
Le système fonctionne de cette maniere avec ERRMSG 1/ PUTOVR implicite ce qui explique qu'un message d'erreur ne fonctionne pas lors d'un premier affichage 2/ OVRATR pour les zones en erreur ce qui explique que les zones en entrée pure ne soient pas remises à l'etat initial. PUTRETAIN fonctionne d'une maniere similaire IL ne renvoie que les attributs des zones ATTENTION pas leur contenu (pas de mise à l'état initial) uniquement l'attribut de début ,pas l'attribut de fin (soulignement par exemple peut aller jusqu'en bout de ligne) |
Autres fonctions avec PUTOVR : Les zones sans OVRDTA n'etant pas réenvoyées les MDT ne sont pas restaurés, ce qui rendrait impossible le traitement de la confirmation sur l'exemple précedent avec un mot-clé CHANGE(xx) (les MDT étant ON lors de la première lecture l'indicateur serait toujours positionné à '1') Vous pouvez alors demander la restauration des MDT avec MDTOFF - MDTOFF(*ALL) toutes les zones en I-O - MDTOFF(*UNPR) toutes les zones I-O sans DSPATR(PR) De la même maniere vous pouvez demander la mise à blanc (effectuée par l'unitée) des zones renseignables sans être obligé d'utiliser le mot-clé OVRDTA (les blancs n'étant pas envoyés par le système) avec ERASEINP . - ERASEINP(*MDTON) mise à blanc des zones ayant le MDT ON - ERASEINP(*ALL) mise à blanc de toutes les zones d'entrée Dans les deux cas il y a restauration des MDT. |
ATTENTION : la mise à blanc étant effectuée par l'unité écran elle n'est connue que de l'unité(pas du système) Exemple: DSPF = R FMT OVERLAY PUTOVR NOM 10 B (sans ovrdta) ----------------- ........... ! ! : : ----------------------- ! toto !<=========: toto :<-------! nom: toto ! ! ! : : ! ! ! ! : : !---------------------! ----------------- :.........: /---------------/ écran table pgm système au premier affichage PUTOVR n'entrant pas en ligne de compte les tables système sont mises à jour , les données envoyées à l'ecran. |
<ENTREE> de la part de l'utilisateur ----------------- ........... ! ! : : ----------------------- ! truc !=========>: truc :------->! nom: truc ! ! ! : : ! ! ! ! : : !---------------------! ----------------- :.........: /---------------/ écran table pgm système lors de la lecture du fmt les données sont transferées de l'unitée vers les tables système si le MDT EST ON puis des tables systèmes vers le pgm(dans tous les cas). |
REAFFICHAGE DU FORMAT SANS ERASEINP ----------------- ........... ! ! : : ----------------------- ! truc !<=========: truc :<-------! nom: ! ! ! : : ! (MOVE *BLANK NOM) ! ! ! : : !---------------------! ----------------- :.........: /---------------/ écran table pgm système la zone de saisie n'etant pas renvoyée (absence de OVRDTA) elle reste renseignée à l'écran. |
REAFFICHAGE DU FORMAT AVEC ERASEINP ----------------- ........... ! ! : : ----------------------- ! !<=========: truc :<-------! nom: ! ! ! : : ! (MOVE *BLANK NOM) ! ! ! : : !---------------------! ----------------- :.........: /---------------/ écran table pgm système la zone de saisie est mise à blanc à l'écran (par l'écran lui-même), mais reste renseignée dans les tables système. Si <ENTREE> utilisateur sans saisie (MDT OFF) il n'y pas transfert unité-table système, le pgm relit "truc". |
REAFFICHAGE DU FORMAT AVEC ERASEINP ET INZINP ----------------- ........... ! ! : : ----------------------- ! !<=========: :<-------! nom: ! ! ! : : ! (MOVE *BLANK NOM) ! ! ! : : !---------------------! ----------------- :.........: /---------------/ écran table pgm système la zone de saisie est mise à blanc à l'écran par l'unité les tables système sont mises à jour avec le contenu-pgm Si <ENTREE> utilisateur sans saisie (MDT OFF) ,il n'y pas transfert unité-table système, mais le pgm relit " ". |
Vous devez prévoir OVRDTA pour la variable NOM même si vous ne souhaitez pas utiliser ce mot-clé. (Conditionné par un indicateur toujours OFF) De la même maniere vous devez prevoir OVRATR sur les zones en entrée pure pour les initialiser dans les tables système avec INZINP. |