Workstation c'est le type de fichier déclaré dans ton RPG.
Il faut voir que les E/S écran ou imprimante, sont gérées (et c'est parfaitement logique), comme des fichiers. Workstation pour les écrans, Printer pour les imprimantes.
Tu écris donc sur l'écran (Sortie, ordre Write), et tu le lis (Entrée, ordre Read).
L'ordre EXFMT fait les deux en une seule opération, ce qui est pratique dans la plupart des cas.
Tu crées les formats dans ton DSPF, le 1er étant ton choix d'option, ton deuxième l'écran de saisie.
Éventuellement, si tu veux que tout soit sur le même écran lors de l'affichage, tu utilises le mot-clé OVERLAY dans ton DDS sur ton 2ème format pour qu'il n'écrase pas le 1er.
Ensuite tu codes ton RPG de manière propre, avec des boucles qui répondent aux touches de fonction pressées.
Note :
Personnellement, je n'utilise plus depuis longtemps les indicateurs de touches de fonction (*inKA, *inKB, etc...) ou les indicateurs liés par DDS (*in01 lié à CF01 par exemple).
Je trouve çà d'une absence de lisibilité totale pour les indicateurs *inK* , et source d'erreurs pour les indicateurs liés (déjà que 99 çà fait peu parfois, si on en exclu 24 çà empire les choses).
Qui plus est, certaines touches sont difficiles à récupérer (est-ce vraiment la touche entrée qui a été pressée ? etc...)
J'utilise donc la DataStructure du fichier écran. J'ai un membre source que j'incorpore au code avec un simple /COPY et comme çà je peux gérer mes touches de fonction de manière bien plus lisible, du genre :
1 2
| DoW SDA_Key <> $F3;
... |
Au cas où çà intéresse voilà le source à importer (moi je l'ai appelé DSPF_DS) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| D
D* Data structure sur l'écran
D ECRANINFDS DS
D DEV_DSP 197 206 * Device name
D NUM_ROWS 152 153B 0 * Nombre lignes
D NUM_COLS 154 155B 0 * Nombre colonnes
D PGM_DEV 241 250 * Program device
D DEV_DSC 251 260 * Dev description
D USER_ID 261 270 * User ID
D DEV_CLASS 271 271 * Device class
D DEV_TYPE 272 277 * Device type
D SDA_Key 369 369 * Key pressed
D CS 5I 0 Overlay(ECRANINFDS:370) * Cursor location
D SDA_RRN 378 379B 0 * N° enreg ss-fich
D MajMinCode 401 404 * Code err. maj/min
D
d $F1 C Const(X'31')
d $F2 C Const(X'32')
d $F3 C Const(X'33')
d $F4 C Const(X'34')
d $F5 C Const(X'35')
d $F6 C Const(X'36')
d $F7 C Const(X'37')
d $F8 C Const(X'38')
d $F9 C Const(X'39')
d $F10 C Const(X'3A')
d $F11 C Const(X'3B')
d $F12 C Const(X'3C')
d $F13 C Const(X'B1')
d $F14 C Const(X'B2')
d $F15 C Const(X'B3')
d $F16 C Const(X'B4')
d $F17 C Const(X'B5')
d $F18 C Const(X'B6')
d $F19 C Const(X'B7')
d $F20 C Const(X'B8')
d $F21 C Const(X'B9')
d $F22 C Const(X'BA')
d $F23 C Const(X'BB')
d $F24 C Const(X'BC')
d $Clear C Const(X'BD')
d $Enter C Const(X'F1')
d $Help C Const(X'F3')
d $RollDown C Const(X'F4')
d $PageUp C Const(X'F4')
d $RollUp C Const(X'F5')
d $PageDown C Const(X'F5')
d $Print C Const(X'F6')
d $Back C Const(X'F8')
d $Auto C Const(X'3F') |
Partager