Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME II. Les Objets

5. ACTION

5.2 Définition d'une ACTION

Catégorie d'utilisateur

La catégorie d'utilisateur est déterminée par une variable globale (SCR_USER_CATG) ou par la variable d'environnement USER_CATG. Une ACTION ne s'exécutera que si la catégorie de l'utilisateur est inférieure ou égale à la valeur fixée dans l'ACTION par le mot-clé CATG. Cette catégorie doit être positive ou nulle.

Si aucune valeur n'est fixée dans l'ACTION, celle-ci pourra toujours s'exécuter.

Classement des ACTIONS par groupes

Pour la clarté, les ACTIONS sont divisées en groupes, selon l'objet qu'elles exploitent. Ces groupes sont les suivants :

5.2.1 ACTIONS liées aux MENUS

Une seule action est directement liée aux MENUS :

MN_EDIT

Cette action édite le MENU dont le nom est fourni comme argument. Les ACTIONS associées aux OPTIONS du MENU seont exécutées pour les OPTIONS sélectionnées par ENTER.

Syntaxe

    MN_EDIT menu_defn

Fonction C

    MN_edit(mn)

5.2.2 ACTIONS liées aux A_BARS

AB_DISPLAY

Affiche l'A_BAR indiquée.

Syntaxe

    AB_DISPLAY abar_defn

Fonction C

    AB_display(ab)

AB_EDIT

Edite l'A_BAR, préalablement affichée par AB_DISPLAY.

Syntaxe

    AB_EDIT abar_defn

Fonction C

    AB_edit(ab)

AB_UNDISPLAY

Efface l'A_BAR affichée par AB_DISPLAY.

Syntaxe

    AB_UNDISPLAY abar_defn

Fonction C

    AB_undisplay(ab)

5.2.3 ACTIONS liées aux APPLS

APPL_RUN

Exécute l'APPL : affiche l'APPL, l'édite et l'efface de l'écran.

Syntaxe

    APPL_RUN appl_defn

Fonction C

    AP_display(ap)
AP_edit(ap)
AP_undisplay(ap)

APPL_MAIN

Quitte l'A_BAR (d'où normalement est appelée cette ACTION) sans l'effacer de l'écran et retourne en exécution de l'ACTION définie dans l'APPL comme APPL_MAIN.

En sortie de l'ACTION APPL_MAIN, le programme retourne en édition de l'A_BAR.

Syntaxe

    APPL_MAIN

Fonction C

    SCR_APP_ABORT = ACT_APPL_MAIN;

APPL_QUIT

Cette ACTION, placée en général dans un des MENUS ou une des OPTIONS de l'A_BAR, quitte l'application après avoir fait disparaître l'A_BAR sous-jacente.

Typiquement, c'est l'ACTION associée à l'OPTION "Exit".

Syntaxe

    APPL_QUIT

Fonction C

    SCR_APP_ABORT = ACT_APPL_QUIT;

AP_IMPORT

Cette action exécute l'APPL passée comme premier paramètre. Cette APPL DOIT contenir une PAGE ou un BC de référence.

Après être sorti de l'APPL, le dernier record sélectionné dans la PAGE ou dans le BC est exporté vers la PAGE passée comme deuxième paramètre à AP_IMPORT.

Syntaxe

     AP_IMPORT appl_defn page_defn

Exemple

    APPL ap_client {
PAGE pg_test
A_BAR {
OPTION "Création" {PG_RESET pg_test PG_CREATE pg_test}
OPTION "Recherche" {PG_RESET pg_test PG_SEARCH pg_test}
OPTION "Suivant" {PG_NEXT pg_test}
OPTION "Précédent" {PG_PREV pg_test}
OPTION "Détruire" {PG_DELETE pg_test}
OPTION "Fin" {APPL_QUIT}
}
}

PAGE pg_test {
...
FIELD ... ISAM is_client name
FNKEY {F4 {AP_IMPORT ap_client pg_test}}
}

L'édition du champ défini de la PAGE permet d'utiliser F4. Cette touche fonction édite l'application ap_client et en retour place dans les champs de la PAGE correspondant à l'ISAM is_client les champs du record courant.

5.2.4 ACTIONS liées aux PAGES

PG_EDIT

Edite la PAGE passée comme argument : affiche, édite puis efface la PAGE. La fonction C PG_edit_window() a le même effet.

Syntaxe

    PG_EDIT page_defn

Fonction C

    PG_edit_window(pg)

PG_REEDIT

Edite la PAGE passée comme paramètre sans l'afficher préalablement. Cette ACTION retourne en édition du dernier champ édité. Cette ACTION n'efface pas la PAGE après édition.

Syntaxe

    PG_REEDIT page_defn

Fonction C

    PG_reedit(pg)

PG_RESET

Réinitialise les champs d'une PAGE. Les valeurs par défaut sont placées dans les champs correspondants et les autres champs prennent une valeur nulle ou vide suivant leur type.

Syntaxe

    PG_RESET page_defn

Fonction C

    PG_reset(pg)

PG_DISPLAY

Affiche une PAGE et mémorise l'IMAGE en background de façon à pouvoir effacer correctement cette PAGE par PG_UNDISPLAY.

Syntaxe

    PG_DISPLAY page_defn

Fonction C

    PG_display_im(pg)

PG_UNDISPLAY

Efface une PAGE préalablement affichée par PG_DISPLAY

Syntaxe

    PG_UNDISPLAY page_defn

Fonction C

    PG_undisplay(pg)

DISPLAY_FLDS

Affiche les champs d'une PAGE, sans le cadre et les DRAWS. Cette ACTION permet de minimiser les écritures dans l'écran après la modification du contenu des champs.

Syntaxe

    DISPLAY_FDLS page_defn

Fonction C

    PG_display_flds(pg)

PG_SLIDE

Affiche une PAGE puis attend une touche. Efface la PAGE dès qu'une touche a été pressée.

Cette ACTION est utilisée pour afficher des PAGES d'informations.

Syntaxe

    PG_SLIDE page_defn

Fonction C

    PG_display_slide(pg)

REEDIT

ACTION utilisée dans les END_FN des champs. Elle permet de rééditer le même champ après la sortie d'un champ.

Syntaxe

    REEDIT

Fonction C

    SCR_FLD_REEDIT = 1;

SKIP

Cette ACTION quitte le champ courant si elle est exécutée en cours d'édition. Elle a un effet semblable à ABORT, mais limité au champ.

Syntaxe

    SKIP

Fonction C

    SCR_FLD_SKIP = 1;

ABORT

Cette ACTION, exécutée en cours d'édition d'une PAGE, permet de quitter l'édition sans exécuter la END_FN du champ et de la PAGE. Elle abandonne l'édition sans condition.

Syntaxe

    ABORT

Fonction C

    SCR_PG_ABORT = 1;

5.2.5 ACTIONS liées aux PRINTERS

PR_SELECT

Sélectionne un PRINTER pour les impressions futures. Le PRINTER n'est actif que lors de la première impression qui suit PR_SELECT.

Syntaxe

    PR_SELECT printer_defn

Fonction C

    PR_select(pr)

PR_PAGE

Envoie vers le PRINTER sélectionné la PAGE indiquée. La position d'impression est celle du curseur actuel du PRINTER.

Si une PAGE n'est pas en ligne 0 et col 0, elle sera également décalée d'autant par rapport au curseur de l'imprimante.

La ligne du curseur n'est pas modifié par cette ACTION. La colonne est décalée de la largeur de la PAGE. Par conséquent, il faut générer des sauts de lignes si on souhaite imprimer plusieurs PAGES successives.

S'il n'y a plus assez de place sur la page courante de l'imprimante, un saut de page est automatiquement généré.

Syntaxe

    PR_PAGE page_defn

Fonction C

    PR_page(pg)

PR_STRING

Imprime le string passé comme argument. Ce string peut contenir des \n (saut de ligne), des \f (saut de page) et \t (tabulations sur 8 caractères). Les tabulations ne sont pas celles définies dans le PRINTER, mais les tabulations standard alignées sur les multiples de 8 caractères.

Syntaxe

    PR_STRING "texte"

Fonction C

    PR_string(zstring);

SEND

Cette fonction termine une impression. Si aucun PRINTER n'est sélectionné ou qu'aucune instruction d'impression n'a été envoyée, cet appel n'a aucun effet. Dans le cas contraire, le string de terminaison (END) du PRINTER est envoyé en fin d'impression.

DOS

En DOS, le fichier ou le device dont le nom est fourni dans la définition du PRINTER par le mot-clé FILE ou PRINTER est ouvert dès la première impression de la session. S'il s'agit d'une imprimante, l'impression commence donc dès qu'une page est prête. S'il s'agit d'un fichier, le fichier est construit page par page.

Unix

Dans un système multi-tâche, l'imprimante n'est pas ouverte pour l'utilisation exclusive du programme. Un "pipe" est ouvert en UNIX vers lequel est dirigé l'output d'impression page par page.

Syntaxe

    SEND

Fonction C

    PR_send()

BOLD

Cette fonction indique que la suite de l'impression doit être faite en BOLD. Les ESCAPE SEQUENCES correspondant aux différents attributs sont définis dans le PRINTER.

Le BOLD reste actif jusqu'au changement d'attribut par une des commandes UNDERLINE, ENLARGED, NORMAL ou CONDENSED. L'attribut est automatiquement changé lors de l'impression d'une PAGE contenant des champs aux attributs particuliers (BOLD, UNDERLINE, ...).

Syntaxe

    BOLD

Fonction C

    PR_bold()

ENLARGED

Cette fonction indique que la suite de l'impression doit être faite en caractères élargis. Les ESCAPE SEQUENCES correspondant aux différents attributs sont définis dans le PRINTER.

Le ENLARGED reste actif jusqu'au changement d'attribut par une des commandes UNDERLINE, BOLD, ENLARGED, NORMAL ou CONDENSED. L'attribut est automatiquement changé lors de l'impression d'une PAGE contenant des champs aux attributs particuliers (BOLD, UNDERLINE, ...).

Syntaxe

    ENLARGED

Fonction C

    PR_enlarged()

CONDENSED

Cette fonction indique que la suite de l'impression doit être faite en caractères condensés. Les ESCAPE SEQUENCES correspondant aux différents attributs sont définis dans le PRINTER.

Le CONDENSED reste actif jusqu'au changement d'attribut par une des commandes UNDERLINE, BOLD, ENLARGED, NORMAL ou CONDENSED. L'attribut est automatiquement changé lors de l'impression d'une PAGE contenant des champs aux attributs particuliers (BOLD, UNDERLINE, ...).

Syntaxe

    CONDENSED

Fonction C

    PR_condensed()

UNDERLINE

Cette fonction indique que la suite de l'impression doit être faite en caractères soulignés. Les ESCAPE SEQUENCES correspondant aux différents attributs sont définis dans le PRINTER.

Le soulignement reste actif jusqu'au changement d'attribut par une des commandes BOLD, ENLARGED, NORMAL ou CONDENSED. L'attribut est automatiquement changé lors de l'impression d'une PAGE contenant des champs aux attributs particuliers (BOLD, UNDERLINE, ...).

Syntaxe

    UNDERLINE

Fonction C

    PR_underline()

NORMAL

Cette fonction indique que la suite de l'impression doit être faite en caractères normaux. Les ESCAPE SEQUENCES correspondant aux différents attributs sont définis dans le PRINTER.

Les caractères reste normaux jusqu'au changement d'attribut par une des commandes UNDERLINE, BOLD, ENLARGED, NORMAL ou CONDENSED. L'attribut est automatiquement changé lors de l'impression d'une PAGE contenant des champs aux attributs particuliers (BOLD, UNDERLINE, ...).

Syntaxe

    NORMAL

Fonction C

    PR_normal()

TAB

Positionne le curseur dans la page courante dans la prochaine colonne suivant la colonne courante et définie dans la liste des TABS fournie lors de la définition du PRINTER.

S'il n'y a pas de TABS définis dans PRINTER, un TAB est placé dans chaque colonne multiple de 8.

Si le curseur dépasse le dernier TAB de la ligne, il n'est pas déplacé.

Syntaxe

    TAB

Fonction C

    PR_tab()

VTAB

Positionne le curseur dans la page courante dans la prochaine ligne suivant la ligne courante et définie dans la liste des VTABS fournie lors de la définition du PRINTER.

S'il n'y a pas de VTABS définis dans PRINTER, un VTAB est placé dans chaque ligne.

Si le curseur dépasse le dernier VTAB de la page, une saut de page est automatiquement généré.

Syntaxe

    VTAB

Fonction C

    PR_vtab()

PG_TAB

Effectue d'abord un TAB. Si le TAB déplace le curseur (dans la ligne courante), la fonction se termine. Sinon, un LINEFEED et un VTAB sont générés pour déplacer le curseur en colonne 0 dans le VTAB suivant dans le PAGE.

Syntaxe

    PG_TAB

Fonction C

    PR_pg_tab()

LINEFEED

Place le curseur en colonne 0 de la ligne suivante de la page courante. Si le curseur est en dernière ligne, génère un saut de page.

Syntaxe

    LINEFEED

Fonction C

    PR_linefeed()

FORMFEED

Envoie la page vers l'imprimante ou le fichier et place la curseur en position (0, 0) de la nouvelle page vierge.

Syntaxe

    FORMFEED

Fonction C

    PR_formfeed()

PR_UP

Remonte le curseur de n lignes dans la page (jusqu'en ligne 0 maximum).

Syntaxe

    PR_UP n

Fonction C

    PR_up(n)

PR_DOWN

Descend le curseur de n lignes dans la page. Génère un formfeed au besoin. Contrairement à LINEFEED, le curseur n'est pas replacé en colonne 0.

Syntaxe

    PR_DOWN n

Fonction C

    PR_down(n)

PR_LEFT

Décale le curseur de n colonnes vers la gauche jusqu'en colonne 0 maximum.

Syntaxe

    PR_LEFT n

Fonction C

    PR_left(n)

PR_RIGHT

Décale le curseur de n colonnes vers la droite. Si la taille de la page est dépassée, génère un saut de ligne et replace le curseur en colonne 0.

Syntaxe

    PR_RIGHT n

Fonction C

    PR_right(n)

PR_GOTO

Place le curseur en position (x, y) dans la page courante. Au maximum, le curseur sera placé en dernière ligne et dernière colonne de la page.

Syntaxe

    PR_GOTO line col

Fonction C

    PR_goto(line, col)

5.2.6 ACTIONS liées aux MPAGES

MP_EDIT_ISAM

Edite un ISAM sur base d'une MPAGE. Les étapes d'édition sont les suivantes :

Syntaxe

    MP_EDIT_ISAM mpage_defn

Fonction C

    MP_edit_isam(mp)

MP_DELETE

Cette ACTION détruit le record courant d'une MPAGE. Elle demande préalablement confirmation.

Syntaxe

    MP_DELETE mpage_defn

MP_MODIFY

Cette ACTION affiche la BPG d'une MPAGE avec le record courant et édite son contenu. Si la dernière touche pressée est F10, le record modifié est sauvé dans l'ISAM.

Syntaxe

    MP_MODIFY mpage_defn

MP_VIEW

Cette ACTION affiche la BPG d'une MPAGE avec le record courant. Elle attend ensuite une touche et retourne.

Syntaxe

    MP_VIEW mpage_defn

MP_CREATE

Cette ACTION affiche la BPG d'une MPAGE avec le record courant et édite son contenu. Si la dernière touche pressée est F10, le record modifié est sauvé dans l'ISAM.

Syntaxe

    MP_CREATE mpage_defn

MP_ADD

Action identique à MP_CREATE.

MP_SET_CBUF

Copie dans le record sélectionné de la MPAGE le record courant de l'ISAM.

Syntaxe

    MP_SET_CBUF mpage_defn

Fonction C

    MP_set_cbuf(mp)

MP_IMPORT

Edite d'abord la MPAGE. Si celle-ci est quittée par une touche autre que F3, copie le record courant de l'ISAM associé dans la PAGE passée comme deuxième paramètre.

Pour terminer, réaffiche les champs de la PAGE avec les nouvelles valeurs.

Syntaxe

    MP_IMPORT mpage_defn page_defn

Exemple

    MPAGE mp_post {
FNKEY {F4 {ABORT}}
ISAM is_client
...
}

PAGE pg_client {
DEFAULTS {ISAM is_client}
...
FIELD Prompt "Code postal : " ISF post
{F4 {MP_IMPORT mp_post pg_client}}
...
}

Dans cet exemple, le fait de presser F4 dans le champ code postal éditera la MPAGE mp_post. Cette MPAGE a F4 comme FNKEY qui quitte l'édition de la MPAGE.

Il suffira donc de presser une nouvelle fois F4 après s'être placé sur le record adéquat de l'ISAM is_client dans la MPAGE pour que la valeur de ce record soit exportée dans la PAGE en cours d'édition.

Voir également

MP_EDIT_ISAM

5.2.7 ACTIONS liées aux BCS

BC_EDIT_ISAM

Edite les deux ISAMS du BC. L'édition du fichier se base sur deux MENUS définis dans le fichier scr.f : scr_bcm1 et scr_bcm2. Ces MENUS peuvent être modifiés, mais doivent conserver les mêmes options aux mêmes positions.

Les étapes d'édition sont les suivantes :

Syntaxe

    BC_EDIT_ISAM bc_defn

Fonction C

    BC_edit_isam(BC *bc)

BCAB_EDIT_ISAM

Edite un BC sur base de l'A_BAR scr_abedis définie dans scr.f. Cette fonction affiche l'A_BAR dans la seconde ligne de la BPAGE du BC bc et permet d'éditer le BC.

Les opérations de base définies dans scr_abedis sont :

Syntaxe

    BCAB_EDIT_ISAM bc_defn

Fonction C

    BCAB_edit_isam(BC *bc)

Voir également

BCAB_EDIT_ISAM, AB_EDIT_ISAM, PG_edit_isam(), MP_edit_isam, AB_edit_isam()

BC_RESET

Vide le bon de commande BC (APG et LPGS). Affiche le BC vide dans l'écran.

Syntaxe

    BC_RESET bc_defn

BC_DISPLAY

Affiche le bon de commande BC (APG et LPGS).

Syntaxe

    BC_DISPLAY bc_defn

BC_UNDISPLAY

Restaure l'écran tel dans son état précédant BC_DISPLAY

Syntaxe

    BC_UNDISPLAY bc_defn

BC_CREATE

Edite le BC dans son état actuel. Permet d'éditer les LPGS et sauve le BC si la touche F10 est pressée.

Il est conseillé d'utiliser BC_RESET avant BC_CREATE pour vider le BC courant.

Syntaxe

    BC_CREATE bc_defn

BC_OPEN

Ouvre les ISAMS associés au BC.

Syntaxe

    BC_OPEN bc_defn

BC_CLOSE

Ferme les ISAMS associés au BC.

Syntaxe

    BC_CLOSE bc_defn

BC_SEARCH

Edite les champs index de l'APG du BC et recherche le BC correspondant. S'il est trouvé, il est affiché dans l'écran.

Syntaxe

    BC_SEARCH bc_defn

BC_NEXT

Recherche le BC suivant le BC courant et l'affiche dans l'écran.

Syntaxe

    BC_NEXT bc_defn

BC_PREV

Recherche le BC précédent le BC courant et l'affiche dans l'écran.

Syntaxe

    BC_PREV bc_defn

BC_MODIFY

Edite le BC courant et sauve sa nouvelle valeur.

Syntaxe

    BC_MODIFY bc_defn

BC_DELETE

Détruit les records associés au BC courant.

Syntaxe

    BC_DELETE bc_defn

BC_DISPLAY_FLDS

Affiche les champs de l'APG et des LPG du BC courant.

Syntaxe

    BC_DISPLAY_FLDS bc_defn

IF_BC_SELECT

Indique s'il existe un BC courant (suite à une recherche précédente). Retourne -1 si ce n'est pas le cas.

Exemple

    OPTION "Suivant" {IF_BC_SELECT bc BC_NEXT bc}

Syntaxe

    IF_BC_SELECT bc_defn

5.2.8 ACTIONS liées aux PAGES et ISAMS

PG_EDIT_ISAM

Cette action édite l'ISAM défini par la PAGE pg. Elle se utilise sur les MENUS scr_bcm1 et scr_bcm2 définis dans scr.f.

Les étapes de l'édition sont les suivantes :

Syntaxe

    PG_EDIT_ISAM pg_defn

Fonction C

    MP_edit_isam(mp)

AB_EDIT_ISAM

Edite un ISAM sur base de l'A_BAR scr_abedis définie dans scr.f et de la PAGE pg_defn.

Les options de l'A_BAR sont :

Syntaxe

    AB_EDIT_ISAM pg_defn

Fonction C

    AB_edit_isam(pg)

PG_SCAN_ISAM

Exécute la fonction PG_scan_isam(pg). Cette fonction affiche la page, permet de sélectionner un index, lit l'ISAM associé à la page et affiche un compteur qui indique le nombre de records lus et le nombre de records satisfaisant aux critères introduits dans la PAGE.

Exemple

    PG_SCAN_ISAM pg_defn

Fonction C

    PG_scan_isam()

PG_DELETE

Détruit le record courant de l'ISAM lié à la page pg.

Syntaxe

    PG_DELETE pg_defn

PG_MODIFY

Edite et sauve le record courant de l'ISAM lié à la page pg.

Syntaxe

    PG_MODIFY pg_defn

PG_CREATE

Edite la page pg et sauve crée un nouveau record dans l'ISAM associé à la PAGE en fonction des valeurs introduites dans la PAGE si la dernière touche est F10.

Cette fonction n'affiche pas la PAGE, ni ne la vide avant encodage.

Exemple

    PG_RESET pg
PG_CREATE pg

Syntaxe

    PG_CREATE pg_defn

CREATE_REC

Affiche la page et l'édite. Si la dernière touche de l'édition est F10, crée un nouveau record dans l'ISAM sur base de la valeur des champs de la PAGE. L'ISAM est ouvert et fermé automatiquement.

La page disparaît en fin de traitement.

Syntaxe

    CREATE_REC pg_defn

PG_SEARCH

Effectue une recherche dans l'ISAM associé à la PAGE. L'index est d'abord sélectionné soit sur base de MENU défini dans la PAGE soit, s'il n'y a pas de MENU, en permettant à l'utilisateur de choisir l'index par déplacement sur les champs index de l'ISAM repris dans la PAGE.

Une fois l'index déterminé, la valeur de l'index est encodée. Le record est alors recherché et s'il est trouvé (lui ou un suivant), le record correspondant est affiché dans la PAGE.

Syntaxe

    PG_SEARCH pg_defn

PG_NEXT

Recherche le record suivant dans l'ordre de recherche déterminé lors du précédent PG_SEARCH. L'action IF_PG_SELECT indique si une recherche est actuellement en cours.

Exemple

    "Suivant" {IF_PG_SELECT pg PG_NEXT pg}

Syntaxe

    PG_NEXT pg_defn

PG_PREV

Recherche le record précédent dans l'ordre de recherche déterminé lors du précédent PG_SEARCH. L'action IF_PG_SELECT indique si une recherche est actuellement en cours.

Exemple

    "Précédent" {IF_PG_SELECT pg PG_PREV pg}

Syntaxe

    PG_PREV pg_defn

PAGE_TO_ISAM

Copie dans le record de l'ISAM is tous les champs de la PAGE pg qui sont liés à cet ISAM.

Syntaxe

    PAGE_TO_ISAM pg_defn is_defn

Fonction C

    SCR_page_to_isam(pg, is)

ISAM_TO_PAGE

Copie dans les champs d'une PAGE pg liés aux champs de l'ISAM is les valeurs du record courant de l'ISAM.

Les CODES (ou CODEISAM) définis dans la PAGE sont appliqués récursivement, de façon à remplir correctement tous les champs de la PAGE. Ainsi, la copie de l'ISAM is_client dans la PAGE pg_client qui contient un champ du type :

    FIELD Prompt "Code postal : " ISAM is_client post CODE is_post code
FIELD Prompt "Commune : " ISAM is_post commune output

remplira le champ code postal, puis recherchera dans is_post le code en question (CODE is_post code). L'ayant trouvé, il effectuera une copie de la commune dans le champ suivant (ISAM is_post commune).

Fonction C

    SCR_isam_to_page(pg, is)

Syntaxe

    ISAM_TO_PAGE pg_defn is_defn

PG_IMPORT

Edite d'abord l'ISAM associé à la PAGE pg1 par PG_EDIT_ISAM. Copie le record courant de l'ISAM associé dans la PAGE pg2 passée comme deuxième paramètre.

Pour terminer, réaffiche les champs de la PAGE pg2 avec les nouvelles valeurs.

Syntaxe

    PG_IMPORT pg1_defn pg2_defn

Voir également

MP_IMPORT, PG_EDIT_ISAM

APPLY_CMP

Applique tous les codes de la PAGE pg. N'affiche pas les nouvelles valeurs des champs.

Syntaxe

    APPLY_CMP pg_defn

Fonction C

    SCR_apply_all_cmp()

Voir également

SCR_apply_cmp(), SCR_apply_all_cmp()

IF_PG_SELECT

Indique s'il existe un record courant (suite à une recherche précédente par PG_SEARCH) dans l'ISAM associé à la PAGE. Retourne -1 si ce n'est pas le cas.

Exemple

    OPTION "Suivant" {IF_PG_SELECT pg PG_NEXT pg}

Syntaxe

    IF_PG_SELECT pg_defn

5.2.9 ACTIONS liées aux ISAMS

OPEN_ISAM

Ouvre l'ISAM is en mode UPDATE.

Syntaxe

    OPEN_ISAM is_defn

Fonction C

    IS_open(is)

IS_SEARCH

Recherche le record correspondant aux valeurs actuellement placées dans le record de l'ISAM is. Cette recherche a lieu sur l'index index_name.

Syntaxe

    IS_SEARCH is_defn index_name

Fonction C

    IS_search()

IS_PREV

Recherche le record précédent le record courant dans l'ordre de l'index de la recherche en cours (entamée par IS_SEARCH ou PG_SEARCH).

Syntaxe

    IS_PREV is_defn

Fonction C

    IS_prev()

IS_NEXT

Recherche le record suivant le record courant dans l'ordre de l'index de la recherche en cours (entamée par IS_SEARCH ou PG_SEARCH).

Syntaxe

    IS_NEXT is_defn

Fonction C

    IS_next()

IS_REWRITE

Réécrit le record courant de l'ISAM après modification. Un record courant doit exister que cette fonction soit exécutable.

Syntaxe

    IS_REWRITE is_defn

Fonction C

    IS_rewrite()

IS_DELETE

Détruit le record courant de l'ISAM is.

Syntaxe

    IS_DELETE is_defn

Fonction C

    IS_delete()

IS_CLOSE (ou CLOSE_ISAM)

Ferme l'ISAM is.

Syntaxe

    IS_CLOSE is_defn

Fonction C

    IS_close(is)

SCAN_ISAM

Cette action lance la fonction C SC_scan_page() : elle lit l'ISAM isam_defn dans l'ordre de l'index dont le numéro est donné et compte les records qui satisfont aux critères indiqués dans la PAGE pg_defn. Elle affiche le compteur si disp est 1.

La fonction C équivalente est préférable car elle offre plus de choix de traitement.

Syntaxe

    SCAN_ISAM pg_defn isam_defn index_num disp

Fonction C

    SC_scan_page()

EXPORT

Lors de l'édition d'un champ code dans une PAGE, on définit souvent une FNKEY (en général F4) pour éditer le sous-fichier code correspondant.

Une fois le record souhaité sélectionné dans le fichier des codes, la transposition automatique dans ce champ peut s'effectuer de deux façons : soit par l'action

    MP_IMPORT mp_defn pg_defn

qui effectue en fait un ISAM_TO_PAGE entre l'ISAM édité par la MPAGE et la PAGE pg_defn, soit en plaçant en cours d'édition du fichier des codes l'action EXPORT. Celles-ci mémorise un champ du record courant d'un ISAM donné et le réexporte dans le champ de la PAGE édité à l'origine.

Cette action n'est pas récursive.

Syntaxe

    EXPORT is_client is_field_name

5.2.10 ACTIONS non classées ailleurs

C_FN

Cette ACTION permet de réaliser façon particulièrement simple un interface avec le langage C. Il suffit de fournir à la suite du mot-clé C_FN une instruction C.

Cette instruction doit être terminée par un point-virgule dans le cas d'une instruction unique. Si l'instruction est composée, elle sera encadrée d'acollades {}.

Si la valeur de retour du résultat de l'instruction C doit être prise en compte pour la suite, il faudra utiliser une instruction qui se termine par un return ou qui est argument de return.

Une valeur de retour non nulle stoppera l'exécution des ACTIONS qui suivent.

Exemple

    OPTION "Delete files" {C_FN return(CheckPerms()); PG_edit pg_delete}

FIELD .... END_FN {C_FN CalcTot(); DISPLAY_FLDS pg_name}

FIELD .... END_FN {C_FN return(CheckField());}

FIELD .... END_FN {C_FN
{
int i, tot = 0;

for(i = 0 ; i < 5 ; i++)
tot += pg_VAL[i];
pg_TOTAL = tot;
}
}

Le premier exemple exécute la fonction C CheckPerms(). Si la valeur de retour de celle-ci est non nulle, l'édition de la PAGE ne se produit pas. Si par contre elle est nulle, la suite se déroulera normalement.

Dans le deuxième exemple, la fonction CalcTot() est exécutée. Quelle qu'en soit la valeur de retour, les champs de la PAGE (éventuellement modifiés par CalcTot() sont réaffichés.

Dans le troisième exemple, une fonction de vérification CheckField() s'exécute en fin de champ. Si cette fonction retourne une valeur non nulle, le champ n'est pas quitté.

Le dernier exemple donne un exemple d'instruction composite avec des variables locales. Si cette méthode de travail est possible, il vaut mieux, pour des raisons de lisibilité évidentes, reporter les sources C dans un fichier annexe.

Syntaxe

        C_FN code C;
| C_FN {code C}

SET_ALARM

Non implémenté

STOP_ALARM

Non implémenté

RESTART_ALARM

Non implémenté

LOCK_SCREEN

Cette fonction permet simplement de supprimer l'affichage de l'écran pour éviter l'usure excessive de celui-ci lors d'une non utilisation de longue durée.

L'application reste active, mais tant qu'une touche n'est pas pressée, l'écran reste noir.

La touche pressée pour réactiver l'écran n'est pas passée à l'application.

Syntaxe

    LOCK_SCREEN

Fonction C

    SCR_lock_screen(text)

FORK

Cette action n'a de sens que dans un système multi-tâches. Elle permet de lancer un nouveau process identique mais concurrent de l'application en cours. Ce nouveau process exécute les actions qui suivent et se termine. On l'utilisera par exemple pour des impressions à lancer en background.

Le nouveau process ne doit pas avoir recours à l'écran ou au clavier dans le cours de son déroulement, ceux-ci restant la propriété de l'application de départ.

Exemple

    OPTION "Impressions" {PG_EDIT pg_select FORK C_FN LongPrint();}

L'application principale édite la page de sélection pg_select. Ensuite, un process nouveau, identique à celui de base est créé. Celui-ci conserve tous les fichiers ouverts de l'application de base.

A partir de ce moment, deux programmes coexistent. Ils se répartissent le travail comme suit :

Syntaxe

    FORK

SYSTEM

Cette action permet d'exécuter des programmes extérieurs. Ces programmes sont bloquant pour le programme courant, c'est-à-dire qu'il faut attendre la fin de ces programmes avant que l'application en cours ne redémarre.

Avant exécution des programmes demandés, l'écran est vidé et le terminal est remis en mode normal en UNIX (cooked mode).

En fin de programme, l'écran est réaffiché dans l'état où il avait été quitté. Cette procédure permet éventuellement de lancer des programmes qui posent des questions ou affichent des messages sans interférer avec l'application.

Plusieurs instruction peuvent être exécutées à la suite dans une seule action SYSTEM : il suffit de les séparer par des points-virgules.

Syntaxe

    SYSTEM "commande[;commande;...]"

Exemple

    SYSTEM "format a:;copy *.dat a:"
SYSTEM "dir *.c | more"

Fonction C

    ACT_exec_system(zstring)

INFO

Cette action permet de visualiser via la PAGE scr_info définie dans scr.f le contenu d'un fichier ascii dont le nom est passé comme paramètre.

Syntaxe

    INFO "filename"

Fonction C

    PG_display_file(filename)

ASK

Cette ACTION affiche un message à l'aide de la PAGE scr_conf définie dans le fichier scr.f. Ce message doit en principe être une question.

L'ACTION attend ensuite la réponse sous forme d'une lettre (O,Y,J ou N). Si la réponse à la question est N, ou la touche ESCAPE, l'ACTION retourne un code non nul.

Si la réponse est O, J ou Y (en majuscule ou minuscule), l'ACTION retourne une valeur nulle.

Par conséquent, les ACTIONS qui suivent ASK s'exécutent ou non en fonction de la réponse fournie au clavier.

Syntaxe

    ASK "string"

Fonction C

    SCR_confirme(zstring)

RECORD

Cette ACTION permet de placer des caractères ou des touches fonctions dans le buffer clavier. Lors des prochaines lectures du clavier par SCR_get_key(), ces touches seront utilisées avant les prochaines touches réellement pressées. Notons que SCR_get_key() est la fonction de base utilisée par tous les programmes d'édition des objets SCR/AL1.

Un nombre maximum de SCR_MAX_REC_KEYS touches est accepté. Cette valeur est définie dans les include files de SCR/AL1. Elle vaut normalement 200.

Les touches et caractères introduits sont lus dans l'ordre d'introduction. Ainsi

    RECORD {"123" F1}

générera dans l'ordre 1, 2, 3 et F1.

Cependant, si deux ACTIONS RECORD sont exécutées en séquence, la seconde sera utilisée d'abord lors des lectures claviers futures.

Ainsi

    RECORD {'1' F2}
RECORD {'3' F4}

générera dans l'ordre '3', F4, '1', F2.

Les caractères et touches enregistrés doivent toujours être placés entre acollades. RECORD F1 est donc incorrect.

La syntaxe permet d'introduire

Syntaxe

    RECORD fnkey | "string" | 'letter' ... | nn ...

Fonction C

    SCR_record_key(int key)

HELPFILE

Cette ACTION permet de définir le fichier qui servira à l'aide en ligne. Le fichier doit avoir été compilé par scr4_h.

A partir du moment où cette ACTION est exécutée, le fichier devient actif, c'est-à-dire qu'il sera utilisé lorsque la touche HELP sera pressée.

Syntaxe

    HELPFILE "filename"

Exemple

    OPTION "Aide en Français" {HELPFILE "frhelp.hlp"}
OPTION "Help in english" {HELPFILE "enhelp.hlp"}
OPTION "Nederlandse hulp" {HELPFILE "nlhelp.hlp"}

HELP

L'ACTION HELP permet d'ouvrir le fichier d'aide défini par HELPFILE sur un sujet donné. Le nom du sujet ignore les différences entre majuscules et minuscules et ne tient compte que des lettres non accentuées et des chiffres.

Syntaxe

    HELP "topic"

Fonction C

    HLP_edit(topic)

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be