`s~BUROTIK020.SAVoBUROTIK020.SAVBACKUP/LIST=SII$DISK:[DECUS.BUROTIK]BUROTIK020.LIS/EXCL=(*.LOG) BURO$DISK:[*...]*.*; SII$DISK:[DECUS.BUROTIK]BUROTIK020.SAV/SAV KERMA BiV5.4 _LCR10::  _$1$DUA9: V5.4 ~ *[DOC]BUROTIK.DOC;1+,. / 4P v- 0123KPWO 56 (9789GHJ N P 9 octobre 1990, BUROTIK Description -----------OBUROTIK est un outil d'exploitation permettant aux utilisateurs d'excuter une -application en la slectionnant dans un menu.IIl peut y avoir autant de menus BUROTIK que de types d'utilisateurs. Par Oexemple un menu pour les secrtaires, un autre pour les ingnieurs commerciaux etc...L'cran BUROTIK est compos :H - D'une entte comportant le titre de la socit (nom logique : D BURO$SOCIETE) , la version BUROTIK (nom logique : BURO$VERSION), F le USER_NAME, le nom du service (nom logique : BURO$SERVICE) et la  date du jour.N - D'une ligne recevant les messages systmes (dfilement de la droite  vers la gauche).L - D'un menu comportant un titre (nom logique : BURO$TITRE_MNU), les = applications utilisables (fichier dfini par le symbole :  BUROTIK$MNU).= - De deux lignes expliquant les touches de fonctions.Fichier de commande -------------------PChaque menu BUROTIK est lanc partir d'un fichier de commande : BURO_xxx.COM, Nou xxx est l'identification du groupe d'utilisateurs. Par exemple BURO_IC.COM >dans le cas d'un menu BUROTIK pour les ingnieurs commerciaux.+Il doit comporter les commandes suivantes :H $ BUROTIK$MNU == "nom du fichier MNU" (ex : BURO_IC.MNU)8 $ BUROTIK == "@BURO$MGR:BUROTIK.COM" $!H $! Si on veut le dclanchement du menu par une touche (ex : F20) $!E $ Define /key /Noecho /Nolog /terminate F20 "BUROTIK" $! $! Excution $! $ BUROTIK Fichier menu ------------FIl y a un menu par cran BUROTIK. Il doit tre dfini dans un fichier NBURO_xxx.MNU ou xxx estl'identification du groupe d'utilisateurs. Par exemple ?BURO_SECRETAIRES.MNU dans le cas d'un menu pour le secrtariat.LCe fichier ASCII est compos d'autant de lignes que d'applications grer. OChaque ligne dfinissant o trouver le fichier de description de l'application utiliser.LDans ce fichier l'application privilgie lors le l'affichage du menu, sera prcde de "*" (astrisque).Fichier de description ----------------------:Chaque fichier de description doit contenir trois lignes :2 Ligne 1 : Texte apparaissant dans le menu.8 Ligne 2 : Commande d'excution de l'application. Ligne 3 : Texte de help.Exemple -------# Fichier BURO_SECETAIRES.COM# ---------------------------9$ BURO$MNU == "BURO$MGR:BURO_SECRETAIRES.MNU"1$ BUROTIK == "@BURO$MGR:BUROTIK.COM"$!H$!----- Dfinition de la touche F20 pour l'appel de BUROTIK (facultatif)$!8$ Def /Key /NoEcho /NoLog /Terminate F20 "BUROTIK"$!!$!----- appel du menu burotik ---$!$ BUROTIK$!----- retour appelant$ Fichier BURO_SECRETAIRES.MNU$ ----------------------------7PASSWORD.Des => Changement de PASSWORD6NOTES.Des => Appel du confrencierLFIP.Des => Appel du formatage et impression PostScript7MAIL.Des => Appel de la messagerie1S2020.Des => Appel du tableurC*WP50.Des => * position prilgie dans le menu  (Traitement de texte) Fichier MAIL.DES ----------------7Messagerie => Ligne de titre du menu6Mail/edit => Ligne de commande DCL.Permet l'envoi de messages => Ligne de help aux utilisateurs.Mise en oeuvre --------------BLe menu BUROTIK peut tre automatiquement appel lors du login de /l'utilisateur en incluant dans son LOGIN.COM : $ @BURO$MGR:BURO_xxx.COMKL'autre faon est de dfinir une touche de fonction et de lui attribuer la commande ci-dessus. Fonctions ---------KToutes les fonctions qui composent le menu BUROTIK sont crites en FORTRAN.?BUROTIK Programme principal. Il rcupre les noms logiques : 2 BURO$SOCIETE, BURO$SERVICE, BURO$TITRE_MNU, et 7 BURO$VERSION. Il rcupre le symbole : BUROTIK$MNU. 9 Il rcupre aussi le "USERNAME" ainsi que le noeud et : la date du jour. A partir du fichier ".MNU" il rcupre: le texte afficher dans le menu ainsi que la commande  DCL approprie.4 Il affiche ensuite l'entte, le menu, les lignes 5 d'explication des touches et attend la slection. 5 Ds qu'elle est faite, il y a branchement vers le programme.?BROAD Sous-programme qui gre une ligne de message venant du : mail box en l'crivant de la droite vers la gauche. Il  utilise les fonctions SMG$.3TDATE Sous-programme de transformation des dates.?FENETRE Sous-programme qui utilise les fonctions SMG$ et qui 7 affiche un menu. Ce menu est constitu de lignes de ; textes avec possibilit de dplacement par les "flches"< ou par les touches "Page suivante" et "Page prcdente". 5 La slection se faisant en appuyant sur la touche "Slect" @COMMENTAIRE Sous-programme qui affiche un commentaire dans une 9 fentre sans cadre ni titre et de l'effacer ou non en 1 sortant. Utilise galement les fonctions SMG$.;NCH Sous-programme qui retourne la longueur relle d'une - chane de caractres (blancs non compris).:RAZBUF Sous-programme qui effectue une remise zro du 3 TYPEHEAD BUFFER afin d'viter l'enchanement de & commandes lors de saisies d'crans.8TRNLOG Sous-programme de translation d'un nom logique.*[DOC]BUROTIK.PS;1+, .0/ 40.- 0123KPWO156 }g^7`_89GHJ N \ %! /wpdict 120 dict def wpdict begin /bdef {bind def} bind def /bflg false def /Bfont 0 def /bon false def /psz 0 def /_S /show load def /bshow { gsave psz 30 div 0 rmoveto dup show grestore show } bdef  /DUx 0 def /DUy 0 def /hscl 0 def /M { moveto 2 mul -2 2 { -2 roll 0 rmoveto _S } for } bdef /makeoutl { dup /OutlineFlag known not { dup dup length 2 add dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /UniqueID known {/UniqueID UniqueID 10000 add def} if /PaintType PaintType 0 eq { 2 }{ PaintType } ifelse def /StrokeWidth 15 def /OutlineFlag true def /OutlineFont currentdict end definefont } if } bdef /nbuff 32 string def /orntsv 0 def /plen 0 def /pwid 0 def /picstr 1 string def /reencode { dup FontDirectory exch known { findfont } { dup nbuff cvs dup length 1 sub get 82 eq { dup nbuff cvs dup length 1 sub 0 exch getinterval findfont begin currentdict dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall /FontName exch def /Encoding WPencoding def currentdict dup end end /FontName get exch definefont } { findfont } ifelse } ifelse } bdef /ron false def /sflg false def /slan 0 def /sp 32 def /sshow { save exch gsave psz 20 div dup neg rmoveto dup show grestore dup save exch Bfont setfont 1 setgray show restore currentfont makeoutl setfont show currentpoint 3 -1 roll restore moveto } bdef /Sx 0 def /Sy 0 def /Ux 0 def /Uy 0 def /W /widthshow load def /WPencoding StandardEncoding 256 array copy def 0 [ 127 /Aacute/Acircumflex/Adieresis/Agrave/Aring/Atilde/Ccedilla /Delta/Eacute/Ecircumflex/Edieresis/Egrave/Eth/Gamma/Iacute/Icircumflex /Idieresis/Igrave/Lambda/Ntilde/Oacute/Ocircumflex/Odieresis/Ograve /Omega/Otilde/Phi/Pi/Psi/Scaron/Sigma/TeXtext32/Theta/Thorn 209 /Uacute/Ucircumflex/Udieresis/Ugrave/Upsilon/Xi/Yacute/Ydieresis /Zcaron/aacute/acircumflex/adieresis/agrave/aring/atilde/brokenbar 228 /ccedilla/copyright/degree/divide 236 /dotlessj/eacute/ecircumflex/edieresis/egrave 242 /eth/ff/ffi 246 /ffl/iacute 252 /icircumflex/idieresis/igrave/logicalnot 1 /minus/mu/multiply/ntilde/oacute/ocircumflex/odieresis/ograve/onehalf /onequarter/onesuperior/otilde/plusminus/registered/scaron/thorn /threequarters/threesuperior/trademark/twosuperior/uacute/ucircumflex /udieresis/ugrave/yacute/ydieresis/zcaron ] { dup type /nametype eq { WPencoding 2 index 2 index put pop 1 add } { exch pop } ifelse } forall pop /_a { transform .25 sub round .25 add exch .25 sub round .25 add exch itransform } bdef /_B {/bflg true def sflg not {/_S /bshow load def /bon true def} if } bdef /_b {/bflg false def bon {/_S /show load def /bon false def} if } bdef /_bd {save} bdef /_bp {save 2 setmiterlimit .06 .06 scale 0 0 moveto} bdef /_ccprocs {/proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } def /_clr {3 {255 div 3 1 roll} repeat ron {6 3 roll pop pop pop} {setrgbcolor} ifelse } bdef /_cp /closepath load def /_cw {stroke initclip moveto 0 2 index rlineto 0 rlineto 0 exch neg rlineto clip newpath} bdef /_d /setdash load def /_DU { currentpoint /DUy exch def /DUx exch def } bdef /_du {gsave save 8 setlinewidth currentpoint -30 add moveto DUx DUy -30 add lineto stroke restore 8 setlinewidth currentpoint -50 add moveto DUx DUy -50 add lineto stroke grestore} bdef /_ed {restore} bdef /_ep {showpage restore 0 0 moveto} bdef /_f /eofill load def /_ff { exch reencode exch 3 div dup /psz exch def scalefont dup /Bfont exch def setfont } bdef /_ffs { /slan exch 10 div def /hscl exch 1000 div def /psz exch 3 div def [ psz hscl mul 0 slan dup sin exch cos div psz mul psz 0 0 ] exch reencode exch makefont dup /Bfont exch def setfont } bdef /_g /setgray load def /_i {gsave dup /picstr exch 7 add 8 idiv string def 3 1 roll translate dup 1 scale dup 1 1 [5 -1 roll 0 0 1 0 0] {currentfile picstr readhexstring pop} image grestore } bdef /_ie { 1 eq {{1 exch sub} currenttransfer _ccprocs settransfer} if /_isx exch def /_isy exch def _isx mul exch _isy mul translate add 2 div /_txc exch def add 2 div /_tyc exch def _txc _isx mul _tyc _isy mul translate 360 exch sub rotate 1 eq { _isx neg _isy scale } { _isx _isy scale } ifelse _txc neg _tyc neg translate } bdef /_irms { save 12 1 roll 1 eq {{1 exch sub} currenttransfer _ccprocs settransfer} if /picstr exch string def translate 2 index 6 index sub 2 div 2 index 6 index sub 2 div neg translate 5 index 5 index 2 div neg exch 2 div exch 2 copy neg exch neg exch 5 2 roll translate 360 exch sub rotate 3 index 3 index 7 index div exch 8 index div exch scale translate pop pop 2 index 2 index scale 3 index 0 eq { [ 3 index 0 0 5 index neg 0 0 ] } { 3 index 1 eq { [ 3 index 0 0 5 index 0 7 index ] } { 3 index 128 eq { [ 3 index neg 0 0 5 index neg 7 index 0 ] } { [ 3 index neg 0 0 5 index 7 index 7 index ] } ifelse } ifelse } ifelse {currentfile picstr readhexstring pop} image pop restore} bdef /_l {_a lineto} bdef /_lr {_a rlineto} bdef /_m {_a moveto} bdef /_O {currentfont makeoutl setfont} bdef /_o {Bfont setfont} bdef /_ornt {/pwid exch def /plen exch def orntsv 1 eq {0 pwid translate -90 rotate} if orntsv 2 eq {pwid plen translate 180 rotate} if orntsv 3 eq {plen 0 translate 90 rotate} if dup 1 eq {pwid 0 translate 90 rotate} if dup 2 eq {pwid plen translate 180 rotate} if dup 3 eq {0 plen translate -90 rotate} if /orntsv exch def } bdef /_lod1 {currentpoint orntsv plen pwid 6 -1 roll restore save} bdef /_lod2 {_bp 7 2 roll _ornt moveto} bdef /_unlod {currentpoint orntsv plen pwid 7 -2 roll restore restore _bp 6 1 roll _ornt moveto } bdef /_p {2 copy moveto 1 0 rlineto moveto} bdef /_pl {{lineto} repeat} bdef /_R {/ron true def currentrgbcolor 1 .25 .25 setrgbcolor} bdef /_r {/ron false def setrgbcolor} bdef /_rm {0 rmoveto} bdef /_rmxy {_a rmoveto} bdef  /_s /stroke load def /_SH {bon {/bon false def} if /_S /sshow load def /sflg true def } bdef /_sh {/_S /show load def /sflg false def bflg {_B} if} bdef /_ST {currentpoint /Sy exch def /Sx exch def} bdef /_st {gsave currentpoint pop  Sx dup Sy moveto sub (\320) stringwidth pop div dup floor cvi dup {(\320) show} repeat sub dup 0 gt {1 scale (\320) show}{pop} ifelse grestore} bdef /_U {currentpoint /Uy exch def /Ux exch def} bdef /_u {gsave currentpoint -30 add moveto Ux Uy -30 add lineto 12 setlinewidth stroke grestore} bdef /_w /setlinewidth load def end wpdict begin _bd usertime 5000 add {dup usertime lt {pop exit} if} loop statusdict /manualfeed true put usertime 5000 add {dup usertime lt {pop exit} if} loop _bp 0 14032 9922 _ornt /CourierR 600 _ff 0 14032 9922 _ornt /HelveticaR 500 _ff 77559 12707 _m (9)_S 72 _rm (octobre)_S 72 _rm (1990)_S G4278 12425 _m /Helvetica-BoldR 900 _ff (BUROTIK)_S /HelveticaR 900 _ff /HelveticaR 500 _ff X1200 11652 _m /Helvetica-BoldR 500 _ff _U (Description)_S _u 75 _rm /HelveticaR 500 _ff 1200 11106 _m (BUROTIK)_S 89 _rm (est)_S 90 _rm (un)_S 89 _rm (outil)_S 90 _rm (d'exploitation)_S 90 _rm (permettant)_S 89 _rm (aux)_S 90 _rm (utilisateurs)_S 89 _rm (d'ex)_S (\355)_S (cuter)_S 90 _rm (une)_S 90 _rm (application)_S 89 _rm (en)_S 90 _rm (la)_S \1200 10924 _m (s)_S (\355)_S (lectionnant)_S 72 _rm (dans)_S 72 _rm (un)_S 72 _rm (menu.)_S 1200 10560 _m (Il)_S 70 _rm (peut)_S 70 _rm (y)_S 70 _rm (avoir)_S 70 _rm (autant)_S 70 _rm (de)_S 70 _rm (menus)_S 71 _rm (BUROTIK)_S 70 _rm (que)_S 70 _rm (de)_S 70 _rm (types)_S 70 _rm (d'utilisateurs.)_S 70 _rm (Par)_S 70 _rm (exemple)_S 70 _rm (un)_S 70 _rm (menu)_S 70 _rm (pour)_S 1200 10378 _m (les)_S 72 _rm (secr)_S (\355)_S (taires,)_S 72 _rm (un)_S 72 _rm (autre)_S 72 _rm (pour)_S 72 _rm (les)_S 72 _rm (ing)_S (\355)_S (nieurs)_S 72 _rm (commerciaux)_S 72 _rm (etc...)_S p1200 9650 _m (L')_S (\355)_S (cran)_S 72 _rm (BUROTIK)_S 72 _rm (est)_S 72 _rm (compos)_S (\355)_S 72 _rm (:)_S 1800 9286 _m (-)_S 56 _rm (D'une)_S 57 _rm (ent)_S (\360)_S (te)_S 56 _rm (comportant)_S 56 _rm (le)_S 57 _rm (titre)_S 56 _rm (de)_S 57 _rm (la)_S 56 _rm (soci)_S (\355)_S (t)_S (\355)_S 57 _rm (\(nom)_S 56 _rm (logique)_S 56 _rm (:)_S 57 _rm (BURO$SOCIET5E\))_S 56 _rm (,)_S 56 _rm (la)_S 57 _rm (version)_S e1800 9104 _m (BUROTIK)_S 94 _rm (\(nom)_S 94 _rm (logique)_S 93 _rm (:)_S 94 _rm (BURO$VERSION\),)_S 94 _rm (le)_S 94 _rm (USER_NAME,)_S 94 _rm (le)_S 93 _rm (nom)_S 94 _rm (du)_S 94 _rm (service)_S 94 _rm (\(nom)_S 1800 8922 _m (logique)_S 72 _rm (:)_S 72 _rm (BURO$SERVICE\))_S 72 _rm (et)_S 72 _rm (la)_S 72 _rm (date)_S 72 _rm (du)_S 72 _rm (jour.)_S t1800 8558 _m (-)_S 72 _rm (D'une)_S 72 _rm (ligne)_S 72 _rm (recevant)_S 72 _rm (les)_S 72 _rm (messages)_S 72 _rm (syst)_S (\360)_S (mes)_S 72 _rm (\(d)_S (\355)_S (filement)_S 72 _rm (de)_S 72 _rm (la)_S 72 _rm (droite)_S 72 _rm (vers)_S 72 _rm (la)_S 72 _rm (gauche\).)_S d1800 8194 _m (-)_S 102 _rm (D'un)_S 102 _rm (menu)_S 102 _rm (comportant)_S 103 _rm (un)_S 102 _rm (titre)_S 102 _rm (\(nom)_S 102 _rm (logique)_S 102 _rm (:)_S 102 _rm (BURO$TITRE_MNU\),)_S 103 _rm (les)_S 102 _rm (applications)_S 1800 8012 _m (utilisables)_S 72 _rm (\(fichier)_S 72 _rm (d)_S (\355)_S (fini)_S 72 _rm (par)_S 72 _rm (le)_S 72 _rm (symbole)_S 72 _rm (:)_S 72 _rm (BUROTIK$MNU\))_S 72 _rm (.)_S 1800 7648 _m (-)_S 72 _rm (De)_S 72 _rm (deux)_S 72 _rm (lignes)_S 72 _rm (expliquant)_S 72 _rm (les)_S 72 _rm (touches)_S 72 _rm (de)_S 72 _rm (fonctions.)_S eu1200 7284 _m /Helvetica-BoldR 500 _ff _U (Fichier)_S 75 _rm (de)_S 75 _rm (commande)_S _u 75 _rm /HelveticaR 500 _ff U1200 6920 _m (Chaque)_S 61 _rm (menu)_S 61 _rm (BUROTIK)_S 60 _rm (est)_S 61 _rm (lanc)_S (\355)_S 60 _rm (\335)_S 61 _rm (partir)_S 61 _rm (d'un)_S 60 _rm (fichier)_S 61 _rm (de)_S 60 _rm (commande)_S 61 _rm (:)_S 60 _rm (BURO_xxx.COM,)_S 61 _rm (ou)_S 61 _rm (xxx)_S 60 _rm (est)_S 1200 6738 _m (l'identification)_S 118 _rm (du)_S 118 _rm (groupe)_S 118 _rm (d'utilisateurs.)_S 118 _rm (Par)_S 118 _rm (exemple)_S 118 _rm (BURO_IC.COM)_S 118 _rm (dans)_S 118 _rm (le)_S 118 _rm (cas)_S 118 _rm (d'un)_S 118 _rm (menu)_S s1200 6556 _m (BUROTIK)_S 72 _rm (pour)_S 72 _rm (les)_S 72 _rm (ing)_S (\355)_S (nieurs)_S 72 _rm (commerciaux.)_S e1200 6192 _m (Il)_S 72 _rm (doit)_S 72 _rm (comporter)_S 72 _rm (les)_S 72 _rm (commandes)_S 72 _rm (suivantes)_S 72 _rm (:)_S m1800 5828 _m ($)_S 72 _rm (BUROTIK$MNU)_S 3600 5828 _m (==)_S 72 _rm ("nom)_S 72 _rm (du)_S 72 _rm (fichier)_S 72 _rm (MNU")_S 72 _rm (\(ex)_S 72 _rm (:)_S 72 _rm (BURO_IC.MNU\))_S b]1800 5646 _m ($)_S 72 _rm (BUROTIK)_S 3600 5646 _m (==)_S 72 _rm ("@BURO$MGR:BUROTIK.COM")_S e1800 5464 _m ($!)_S 1800 5282 _m ($!)_S 72 _rm (Si)_S 72 _rm (on)_S 72 _rm (veut)_S 72 _rm (le)_S 72 _rm (d)_S (\355)_S (clanchement)_S 72 _rm (du)_S 72 _rm (menu)_S 72 _rm (par)_S 72 _rm (une)_S 72 _rm (touche)_S 72 _rm (\(ex)_S 72 _rm (:)_S 72 _rm (F20\))_S 1800 5100 _m ($!)_S 1800 4918 _m ($)_S 72 _rm (Define)_S 72 _rm (/key)_S 72 _rm (/Noecho)_S 72 _rm (/Nolog)_S 72 _rm (/terminate)_S 72 _rm (F20)_S 6000 4918 _m ("BUROTIK")_S 1800 4736 _m ($!)_S 61800 4554 _m ($!)_S 72 _rm (Ex)_S (\355)_S (cution)_S 1800 4372 _m ($!)_S &1800 4190 _m ($)_S 72 _rm (BUROTIK)_S O1200 3644 _m /Helvetica-BoldR 500 _ff _U (Fichier)_S 75 _rm (menu)_S _u 75 _rm /HelveticaR 500 _ff 1200 3280 _m (Il)_S 71 _rm (y)_S 71 _rm (a)_S 71 _rm (un)_S 71 _rm (menu)_S 71 _rm (par)_S 71 _rm (\355)_S (cran)_S 71 _rm (BUROTIK.)_S 71 _rm (Il)_S 71 _rm (doit)_S 71 _rm (\356)_S (tre)_S 71 _rm (d)_S (\355)_S (fini)_S 72 _rm (dans)_S 71 _rm (un)_S 71 _rRm (fichier)_S 71 _rm (BURO_xxx.MNU)_S 71 _rm (ou)_S 71 _rm (xxx)_S 71 _rm (est)_S 1200 3098 _m (l'identification)_S 71 _rm (du)_S 72 _rm (groupe)_S 71 _rm (d'utilisateurs.)_S 71 _rm (Par)_S 72 _rm (exemple)_S 71 _rm (BURO_SECRETAIRES.MNU)_S 72 _rm (dans)_S 71 _rm (le)_S 72 _rm (cas)_S 71 _rm (d'un)_S Y1200 2916 _m (menu)_S 72 _rm (pour)_S 72 _rm (le)_S 72 _rm (secr)_S (\355)_S (tariat.)_S 1200 2552 _m (Ce)_S 55 _rm (fichier)_S 55 _rm (ASCII)_S 55 _rm (est)_S 55 _rm (compos)_S (\355)_S 55 _rm (d'autant)_S 55 _rm (de)_S 54 _rm (lignes)_S 55 _rm (que)_S 55 _rm (d'applications)_S 55 _rm (\335)_S 55 _rm (g)_S (\355)_S (rer.)_S 55 _rm (Chaque)_S 555 _rm (ligne)_S 55 _rm (d)_S (\355)_S (finissant)_S 1200 2370 _m (o)_S (\030)_S 72 _rm (trouver)_S 72 _rm (le)_S 72 _rm (fichier)_S 72 _rm (de)_S 72 _rm (description)_S 72 _rm (de)_S 72 _rm (l'application)_S 72 _rm (\335)_S 72 _rm (utiliser.)_S 1200 2006 _m (Dans)_S 56 _rm (ce)_S 56 _rm (fichier)_S 55 _rm (l'application)_S 56 _rm (privil)_S (\355)_S (gi)_S (\355)_S (e)_S 56 _rm (lors)_S 56 _rm (le)_S 55 _rm (l'affichage)_S 56 _rm (du)_S 56 _rm (menu,)_S 56 _rm (sera)_S 56 _rm (pr)_S (\355)_S (c)_eS (\355)_S (d)_S (\355)_S (e)_S 55 _rm (de)_S 56 _rm ("*")_S 56 _rm (\(ast)_S (\355)_S (risque\).)_S x8629 1257 _m (1)_S _ep +_bp /HelveticaR 500 _ff 0 14032 9922 _ornt y1200 12525 _m /Helvetica-BoldR 500 _ff _U (Fichier)_S 75 _rm (de)_S 75 _rm (description)_S _u 75 _rm /HelveticaR 500 _ff p1200 12161 _m (Chaque)_S 72 _rm (fichier)_S 72 _rm (de)_S 72 _rm (description)_S 72 _rm (doit)_S 72 _rm (contenir)_S 72 _rm (trois)_S 72 _rm (lignes)_S 72 _rm (:)_S _1800 11797 _m (Ligne)_S 72 _rm (1)_S 72 _rm (:)_S 72 _rm (Texte)_S 72 _rm (apparaissant)_S 72 _rm (dans)_S 72 _rm (le)_S 72 _rm (menu.)_S 1800 11433 _m (Ligne)_S 72 _rm (2)_S 72 _rm (:)_S 72 _rm (Commande)_S 72 _rm (d'ex)_S (\355)_S (cution)_S 72 _rm (de)_S 72 _rm (l'application.)_S b1800 11069 _m (Ligne)_S 72 _rm (3)_S 72 _rm (:)_S 72 _rm (Texte)_S 72 _rm (de)_S 72 _rm (help.)_S T1200 10523 _m /Helvetica-BoldR 500 _ff _U (Exemple)_S _u 75 _rm /HelveticaR 500 _ff ?1800 10159 _m _U (Fichier)_S 72 _rm (BURO_SECETAIRES.COM)_S _u bl1200 9613 _m ($)_S 1800 9613 _m (BURO$MNU)_S 3000 9613 _m (==)_S 72 _rm ("BURO$MGR:BURO_SECRETAIRES.MNU")_S c1200 9431 _m ($)_S 1800 9431 _m (BUROTIK)_S 3000 9431 _m (==)_S 72 _rm ("@BURO$MGR:BUROTIK.COM")_S r1200 9249 _m ($!)_S 1200 9067 _m ($!-----)_S 1800 9067 _m (D)_S (\355)_S (finition)_S 72 _rm (de)_S 72 _rm (la)_S 72 _rm (touche)_S 72 _rm (F20)_S 72 _rm (pour)_S 72 _rm (l'appel)_S 72 _rm (de)_S 72 _rm (BUROTIK)_S 72 _rm (\(facultatif\))_S e1200 8885 _m ($!)_S 1200 8703 _m ($)_S 1800 8703 _m (Def)_S 72 _rm (/Key)_S 72 _rm (/NoEcho)_S 72 _rm (/NoLog)_S 72 _rm (/Terminate)_S 72 _rm (F20)_S 72 _rm ("BUROTIK")_S e1200 8521 _m ($!)_S j1200 8339 _m ($!-----)_S 72 _rm (appel)_S 72 _rm (du)_S 72 _rm (menu)_S 72 _rm (burotik)_S 72 _rm (---)_S 1200 8157 _m ($!)_S ,1200 7975 _m ($)_S 1800 7975 _m (BUROTIK)_S ?1200 7793 _m ($!-----)_S 72 _rm (retour)_S 72 _rm (appelant)_S h?1800 7247 _m _U (Fichier)_S 72 _rm (BURO_SECRETAIRES.MNU)_S _u mj1200 6883 _m (PASSWORD.Des)_S 3600 6883 _m (=>)_S 72 _rm (Changement)_S 72 _rm (de)_S 72 _rm (PASSWORD)_S s1200 6701 _m (NOTES.Des)_S 3600 6701 _m (=>)_S 72 _rm (Appel)_S 72 _rm (du)_S 72 _rm (conf)_S (\355)_S (rencier)_S o1200 6519 _m (FIP.Des)_S 3600 6519 _m (=>)_S 72 _rm (Appel)_S 72 _rm (du)_S 72 _rm (formatage)_S 72 _rm (et)_S 72 _rm (impression)_S 72 _rm (PostScript)_S _q1200 6337 _m (MAIL.Des)_S 3600 6337 _m (=>)_S 72 _rm (Appel)_S 72 _rm (de)_S 72 _rm (la)_S 72 _rm (messagerie)_S a1200 6155 _m (S2020.Des)_S 3600 6155 _m (=>)_S 72 _rm (Appel)_S 72 _rm (du)_S 72 _rm (tableur)_S 1200 5973 _m (*WP50.Des)_S 3600 5973 _m (=>)_S 72 _rm (*)_S 72 _rm (position)_S 72 _rm (pril)_S (\355)_S (gi)_S (\355)_S (e)_S 72 _rm (dans)_S 72 _rm (le)_S 72 _rm (menu)_S 72 _rm (\(Traitement)_S 72 _rm (de)_S 72 _rm (texte\))_S 31800 5427 _m _U (Fichier)_S 72 _rm (MAIL.DES)_S _u r~1200 4881 _m (Messagerie)_S 3600 4881 _m (=>)_S 72 _rm (Ligne)_S 72 _rm (de)_S 72 _rm (titre)_S 72 _rm (du)_S 72 _rm (menu)_S q1200 4699 _m (Mail/edit)_S 3600 4699 _m (=>)_S 72 _rm (Ligne)_S 72 _rm (de)_S 72 _rm (commande)_S 72 _rm (DCL)_S 51200 4517 _m (Permet)_S 72 _rm (l'envoi)_S 72 _rm (de)_S 72 _rm (messages)_S 3600 4517 _m (=>)_S 72 _rm (Ligne)_S 72 _rm (de)_S 72 _rm (help)_S 51200 4335 _m 72 _rm (aux)_S 72 _rm (utilisateurs.)_S mp1200 3789 _m /Helvetica-BoldR 500 _ff _U (Mise)_S 75 _rm (en)_S 75 _rm (oeuvre)_S _u 75 _rm /HelveticaR 500 _ff 1200 3425 _m (Le)_S 63 _rm (menu)_S 63 _rm (BUROTIK)_S 63 _rm (peut)_S 63 _rm (\356)_S (tre)_S 63 _rm (automatiquement)_S 62 _rm (appel)_S (\355)_S 63 _rm (lors)_S 63 _rm (du)_S 63 _rm (login)_S 63 _rm (de)_S 63 _rm (l'utilisateur)_S 62 _rm (en)_S 63 _rm (incluant)_S 63 _rm (dans)_S >1200 3243 _m (son)_S 72 _rm (LOGIN.COM)_S 72 _rm (:)_S 72 _rm 51800 2879 _m ($)_S 72 _rm (@BURO$MGR:BURO_xxx.COM)_S 91200 2515 _m (L'autre)_S 72 _rm (fa)_S (\344)_S (on)_S 72 _rm (est)_S 72 _rm (de)_S 72 _rm (d)_S (\355)_S (finir)_S 72 _rm (une)_S 72 _rm (touche)_S 72 _rm (de)_S 72 _rm (fonction)_S 72 _rm (et)_S 72 _rm (de)_S 72 _rm (lui)_S 72 _rm (attribuer)_S 72 _rm (l/a)_S 72 _rm (commande)_S 72 _rm (ci-dessus.)_S _8629 1257 _m (2)_S _ep +_bp /HelveticaR 500 _ff 0 14032 9922 _ornt 5V1200 12707 _m /Helvetica-BoldR 500 _ff _U (Fonctions)_S _u 75 _rm /HelveticaR 500 _ff 1200 12343 _m (Toutes)_S 72 _rm (les)_S 72 _rm (fonctions)_S 72 _rm (qui)_S 72 _rm (composent)_S 72 _rm (le)_S 72 _rm (menu)_S 72 _rm (BUROTIK)_S 72 _rm (sont)_S 72 _rm (\355)_S (crites)_S 72 _rm (en)_S 72 _rm (FORTRAN.)_S 31200 11979 _m (BUROTIK)_S 3000 11979 _m (Programme)_S 100 _rm (principal.)_S 99 _rm (Il)_S 99 _rm (r)_S (\355)_S (cup)_S (\360)_S (re)_S 100 _rm (les)_S 99 _rm (noms)_S 100 _rm (logiques)_S 99 _rm (:)_S 99 _rm /Helvetica-BoldR 500 _ff (BURO$SOCIETE,)_S 73000 11797 _m (BURO$SERVICE,)_S 64 _rm (BURO$TITRE_MNU,)_S 65 _rm (et)_S 64 _rm (BURO$VERSION)_S /HelveticaR 500 _ff (.)_S 62 _rm (Il)_S 62 _rm (r)_S (\355)_S (cup)_S (\360)_S (re)_S 62 _rm (le)_S r3000 11615 _m (symbole)_S 70 _rm (:)_S 71 _rm /Helvetica-BoldR 500 _ff (BUROTIK$MNU)_S /HelveticaR 500 _ff (.)_S 70 _rm (Il)_S 71 _rm (r)_S (\355)_S (cup)_S (\360)_S (re)_S 70 _rm (aussi)_S 71 _rm (le)_S 70 _rm ("USERNAME")_S 71 _rm (ainsi)_S 70 _rm (que)_S 71 _rm (le)_S 3000 11433 _m (noeud)_S 76 _rm (et)_S 77 _rm (la)_S 76 _rm (date)_S 77 _rm (du)_S 76 _rm (jour.)_S 77 _rm (A)_S 76 _rm (partir)_S 77 _rm (du)_S 76 _rm (fichier)_S 77 _rm (".MNU")_S 76 _rm (il)_S 77 _rm (r)_S (\355)_S (cup)_S (\360)_S (re)_S 77 _rm (le)_S 7M6 _rm /Helvetica-BoldR 500 _ff (texte)_S /HelveticaR 500 _ff 77 _rm (\335)_S )3000 11251 _m (afficher)_S 72 _rm (dans)_S 72 _rm (le)_S 72 _rm (menu)_S 72 _rm (ainsi)_S 72 _rm (que)_S 72 _rm (la)_S 72 _rm /Helvetica-BoldR 500 _ff (commande)_S 75 _rm (DCL)_S /HelveticaR 500 _ff 72 _rm (appropri)_S (\355)_S (e.)_S B3000 10887 _m (Il)_S 80 _rm (affiche)_S 80 _rm (ensuite)_S 80 _rm (l'ent)_S (\360)_S (te,)_S 79 _rm (le)_S 80 _rm (menu,)_S 80 _rm (les)_S 80 _rm (lignes)_S 79 _rm (d'explication)_S 80 _rm (des)_S 80 _rm (touches)_S 79 _rm (et)_S 3000 10705 _m (attend)_S 117 _rm (la)_S 116 _rm (s)_S (\355)_S (lection.)_S 116 _rm (D)_S (\360)_S (s)_S 117 _rm (qu'elle)_S 116 _rm (est)_S 116 _rm (faite,)_S 117 _rm (il)_S 116 _rm (y)_S 116 _rm (a)_S 117 _rm (branchement)_S 116 _rm (vers)_S 116 _rm (le)_S S3000 10523 _m (programme.)_S m1200 10159 _m (BROAD)_S 3000 10159 _m (Sous-programme)_S 86 _rm (qui)_S 85 _rm (g)_S (\355)_S (re)_S 86 _rm (une)_S 86 _rm (ligne)_S 85 _rm (de)_S 86 _rm (message)_S 86 _rm (venant)_S 85 _rm (du)_S 86 _rm (mail)_S 86 _rm (box)_S 85 _rm (en)_S 83000 9977 _m (l')_S (\355)_S (crivant)_S 72 _rm (de)_S 72 _rm (la)_S 72 _rm (droite)_S 72 _rm (vers)_S 72 _rm (la)_S 72 _rm (gauche.)_S 72 _rm (Il)_S 72 _rm (utilise)_S 72 _rm (les)_S 72 _rm (fonctions)_S 72 _rm /Helvetica-BoldR 500 _ff (SMG$)_S /HelveticaR 500 _ff (.)_S 1200 9613 _m (TDATE)_S 3000 9613 _m (Sous-programme)_S 72 _rm (de)_S 72 _rm (transformation)_S 72 _rm (des)_S 72 _rm (dates.)_S 1200 9249 _m (FENETRE)_S 3000 9249 _m (Sous-programme)_S 66 _rm (qui)_S 65 _rm (utilise)_S 66 _rm (les)_S 65 _rm (fonctions)_S 66 _rm /Helvetica-BoldR 500 _ff (SMG$)_S /HelveticaR 500 _ff 65 _rm (et)_S 66 _rm (qui)_S 65 _rm (affiche)_S 65 _rm (un)_S 66 _rm (menu.)_S 65 _rm (Ce)_S )3000 9067 _m (menu)_S 64 _rm (est)_S 63 _rm (constitu)_S (\355)_S 64 _rm (de)_S 64 _rm (lignes)_S 63 _rm (de)_S 64 _rm (textes)_S 64 _rm (avec)_S 64 _rm (possibilit)_S (\355)_S 63 _rm (de)_S 64 _rm (d)_S (\355)_S (placement)_S 64 _rm (par)_S 3000 8885 _m (les)_S 56 _rm (")_S /Helvetica-BoldR 500 _ff (fl)_S (\360)_S (ches)_S /HelveticaR 500 _ff (")_S 57 _rm (ou)_S 56 _rm (par)_S 56 _rm (les)_S 57 _rm (touches)_S 56 _rm (")_S /Helvetica-BoldR 500 _ff (Page)_S 59 _rm (suivant)_S /HelveticaR 500 _ff (e")_S 56 _rm (et)_S 56 _rm (")_S /Helvetica-BoldR 500 _ff (Page)_S 59 _rm (pr)_S (\355)_S (c)_S (\355)_S (dent)_S (e)_S /HelveticaR 500 _ff (".)_S 56 _rm (La)_S e3000 8703 _m (s)_S (\355)_S (lection)_S 72 _rm (se)_S 72 _rm (faisant)_S 72 _rm (en)_S 72 _rm (appuyant)_S 72 _rm (sur)_S 72 _rm (la)_S 72 _rm (touche)_S 72 _rm (")_S /Helvetica-BoldR 500 _ff (S)_S (\355)_S (lect)_S /HelveticaR 500 _ff (")_S 1200 8339 _m (COMMENTAIRE)_S 3000 8339 _m (Sous-programme)_S 72 _rm (qui)_S 71 _rm (affiche)_S 72 _rm (un)_S 72 _rm (commentaire)_S 72 _rm (dans)_S 72 _rm (une)_S 71 _rm (fen)_S (\356)_S (tre)_S 72 _rm (sans)_S 72 _rm (cadre)_S 3000 8157 _m (ni)_S 91 _rm (titre)_S 91 _rm (et)_S 91 _rm (de)_S 91 _rm (l'effacer)_S 90 _rm (ou)_S 91 _rm (non)_S 91 _rm (en)_S 91 _rm (sortant.)_S 91 _rm (Utilise)_S 90 _rm (\355)_S (galement)_S 91 _rm (les)_S 91 _rm (fonctions)_S I3000 7975 _m /Helvetica-BoldR 500 _ff (SMG$)_S /HelveticaR 500 _ff (.)_S S1200 7611 _m (NCH)_S 3000 7611 _m (Sous-programme)_S 60 _rm (qui)_S 59 _rm (retourne)_S 60 _rm (la)_S 59 _rm (longueur)_S 60 _rm (r)_S (\355)_S (elle)_S 59 _rm (d'une)_S 60 _rm (cha)_S (\374)_S (ne)_S 59 _rm (de)_S 59 _rm (caract)_S (\360)_S (res)_S ?3000 7429 _m (\(blancs)_S 72 _rm (non)_S 72 _rm (compris\).)_S e1200 7065 _m (RAZBUF)_S 3000 7065 _m (Sous-programme)_S 73 _rm (qui)_S 72 _rm (effectue)_S 73 _rm (une)_S 72 _rm (remise)_S 73 _rm (\335)_S 72 _rm (z)_S (\355)_S (ro)_S 73 _rm (du)_S 72 _rm /Helvetica-BoldR 500 _ff (TYPEHEAD)_S 76 _rm (BUFFER)_S /Helvetica R 500 _ff 3000 6883 _m (afin)_S 72 _rm (d')_S (\355)_S (viter)_S 72 _rm (l'encha)_S (\374)_S (nement)_S 72 _rm (de)_S 72 _rm (commandes)_S 72 _rm (lors)_S 72 _rm (de)_S 72 _rm (saisies)_S 72 _rm (d')_S (\355)_S (crans.)_S 1200 6519 _m (TRNLOG)_S 3000 6519 _m (Sous-programme)_S 72 _rm (de)_S 72 _rm (translation)_S 72 _rm (d'un)_S 72 _rm (nom)_S 72 _rm (logique.)_S 8629 1257 _m (3)_S I_ep statusdict /manualfeed false put statusdict begin 1 setpapertray end 7_ed end *[DOC]BUROTIK.WP50;2+, ./ 4- 0123KPWO56\<77q789@<΂GHJ N WPC 2D W%urierCourierHelveticaHelvetica Bold#|Q#|Q#|Q#|QLPS40 Format A4,bac du hautDIPRI41.PRStx  @I2) B"S^..;]]o%88Aa.8..]]]]]]]]]]..aaa]ooxxofx.So]xoxofxooof...N]%]]S]].]]%%S%]]]]8S.]SxSSS8+8a8.88888xxxxx888888xx8f.xo]o]o]o]o]xSo]o]o]o]........x]]]]]x]x]x]x]oSo]xxf]oSx]o]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]%xxxxxxxxxxxxxxxxxxxxoSxxxxxxxxxxxxxxxxxxxxxxxxxxxxfSN:xx.xZ]8f]]]]x]>=]8x{{]8x xx88]88xx]]xxxxxxxxxxxxSSxxxxx%8xxxxxxxxxxxss8CourierHelveticasgxxxXgx  @CB}9`H.`D4PkC2 $$!J"^SSk CdduSdSS~BUROTIK020.SAV  [DOC]BUROTIK.WP50;2ڇSS1SSSSCSCCCdSdNddSdd,2dddxxxxxddddddxxdSx, SSSSSSSSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCxxxxxxxxxxxx,xxxxxxxx$xxxxxxxxxxxxxxxxxxxxxxxxxxxxNixxSxdxondxdx9xxdd,ddxx,xxxxxxxxxxxx,xxxxxCdxxxxxxxxxxx,ssdsgxxxXgx  @CB}9`H.`D4PkCBfSWD4PkC"^Sd SdduSdSSdd%SdSdSdSSS uduTudSdd,2dddxxxxxddddddxxdSx, SSSSSSSSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSxxxxxxxxxxxx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNixxSxdxondxdxGxx,ddxx,xxxxxxxxxxxx,xxxxxSxxxxxxxxxxx,xxd2X8  3ksgxxxXgx  @CB}9`H.`D4PkCBfSWD4PkCJfSWD4p}wC"S^.8O]]x.88Aa.8..]]]]]]]]]]88aaafxxxxofx.]xfxoxofxooof8.8a].]f]f]8ff..].ffffA]8f]]]SA/Aa8.88888xxxxx888888xx8f.xx]x]x]x]x]x]o]o]o]o]........xfffffxfxfxfxfo]x]xxffo]xfofxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf.xxxxxxxxxxxxxxxxxxxxo]xxxxxxxxxxxxxxxxxxxxxxxxxxxxfSN:xx.x]]8f]]]]x]>=]8x{{]8x(xxSS]88xx]]xxxxxxxxxxxxffxxxxx.Sxxxxxxxxxxxxx8sgxxxXgx  @CB}9`H.`D4PkCBfSWD4PkCJfSWD4p}wCJ}9dK.dD4p}wC2s{ `D4PkC  3'3'Standard6& 3 1, 4 6&Standard;X(Digi(% USFR`"]  9 octobre 1990  WD4PkC a: BUROTIK 6& 3 1, 4 6&Standard;X(Digi(6&6&Standardac du hautDIPRI41.PRS% FRFRӃ  `D4PkC  Description BUROTIK est un outil d'exploitation permettant aux utilisateurs d'ex)cuter une application en la s)lectionnant dans un menu. Il peut y avoir autant de menus BUROTIK que de types d'utilisateurs. Par exemple un menu pour les secr)taires, un autre pour les ing)nieurs commerciaux etc... L')cran BUROTIK est compos) : X© D'une ent/te comportant le titre de la soci)t) (nom logique : BURO$SOCIETE) , la version BUROTIK (nom logique : BURO$VERSION), le USER_NAME, le nom du service (nom logique : BURO$SERVICE) et la date du jour." X© D'une ligne recevant les messages syst/mes (d)filement de la droite vers la gauche)." X© D'un menu comportant un titre (nom logique : BURO$TITRE_MNU), les applications utilisables (fichier d)fini par le symbole : BUROTIK$MNU) ." X© De deux lignes expliquant les touches de fonctions." Fichier de commande Chaque menu BUROTIK est lanc) ! partir d'un fichier de commande : BURO_xxx.COM, ou xxx est l'identification du groupe d'utilisateurs. Par exemple BURO_IC.COM dans le cas d'un menu BUROTIK pour les ing)nieurs commerciaux. Il doit comporter les commandes suivantes : X$ BUROTIK$MNU#,== "nom du fichier MNU" (ex : BURO_IC.MNU)" X$ BUROTIK %%,== "@BURO$MGR:BUROTIK.COM"" X$!" X$! Si on veut le d)clanchement du menu par une touche (ex : F20)" X$!" $ Define /key /Noecho /Nolog /terminate F20ABBpJ"BUROTIK" X$!" X$! Ex)cution" X$!" X$ BUROTIK" Fichier menu Il y a un menu par )cran BUROTIK. Il doit +tre d)fini dans un fichier BURO_xxx.MNU ou xxx est l'identification du groupe d'utilisateurs. Par exemple BURO_SECRETAIRES.MNU dans le cas d'un menu pour le secr)tariat. Ce fichier ASCII est compos) d'autant de lignes que d'applications ! g)rer. Chaque ligne d)finissant oI trouver le fichier de description de l'application ! utiliser. Dans ce fichier l'application privil)gi)e lors le l'affichage du menu, sera pr)c)d)e de "*" (ast)risque).  9+ Fichier de description Chaque fichier de description doit contenir trois lignes : XLigne 1 : Texte apparaissant dans le menu." XLigne 2 : Commande d'ex)cution de l'application." Ligne 3 : Texte de help. Exemple Fichier BURO_SECETAIRES.COM $BURO$MNU %== "BURO$MGR:BURO_SECRETAIRES.MNU" $BUROTIK %== "@BURO$MGR:BUROTIK.COM" $! $!-----D)finition de la touche F20 pour l'appel de BUROTIK (facultatif) $! $Def /Key /NoEcho /NoLog /Terminate F20 "BUROTIK" $! $!----- appel du menu burotik --- $! $BUROTIK $!----- retour appelant Fichier BURO_SECRETAIRES.MNU PASSWORD.Des %%,=> Changement de PASSWORD NOTES.Des`  %%,=> Appel du conf)rencier FIP.Des`  %%,=> Appel du formatage et impression PostScript MAIL.Des`  %%,=> Appel de la messagerie S2020.Des`  %%,=> Appel du tableur *WP50.Des`  %%,=> * position pril)gi)e dans le menu (Traitement de texte) Fichier MAIL.DES Messagerie`  %%,=> Ligne de titre du menu Mail/edit`  %%,=> Ligne de commande DCL Permet l'envoi de messages(,=> Ligne de help aux utilisateurs. Mise en oeuvre Le menu BUROTIK peut +tre automatiquement appel) lors du login de l'utilisateur en incluant dans son LOGIN.COM : $ @BURO$MGR:BURO_xxx.COM L'autre fa'on est de d)finir une touche de fonction et de lui attribuer la commande cidessus.  ( Fonctions Toutes les fonctions qui composent le menu BUROTIK sont )crites en FORTRAN. BUROTIK` X %Programme principal. Il r)cup/re les noms logiques : BURO$SOCIETE, BURO$SERVICE, BURO$TITRE_MNU, et BURO$VERSION . Il r)cup/re le symbole : BUROTIK$MNU . Il r)cup/re aussi le "USERNAME" ainsi que le noeud et la date du jour. A partir du fichier ".MNU" il r)cup/re le texte ! afficher dans le menu ainsi que la commande DCL appropri)e." XX` X %Il affiche ensuite l'ent/te, le menu, les lignes d'explication des touches et attend la s)lection. D/s qu'elle est faite, il y a branchement vers le programme." BROADXX` X %Sousprogramme qui g)re une ligne de message venant du mail box en l')crivant de la droite vers la gauche. Il utilise les fonctions SMG$ ." TDATEXX` X %Sousprogramme de transformation des dates." FENETRE` X %Sousprogramme qui utilise les fonctions SMG$ et qui affiche un menu. Ce menu est constitu) de lignes de textes avec possibilit) de d)placement par les " fl/ches " ou par les touches " Page suivant e" et " Page pr)c)dent e ". La s)lection se faisant en appuyant sur la touche " S)lect "" COMMENTAIRE %Sousprogramme qui affiche un commentaire dans une fen+tre sans cadre ni titre et de l'effacer ou non en sortant. Utilise )galement les fonctions SMG$ ." NCHXX` X %Sousprogramme qui retourne la longueur r)elle d'une cha3ne de caract/res (blancs non compris)." RAZBUF` X %Sousprogramme qui effectue une remise ! z)ro du TYPEHEAD BUFFER afin d')viter l'encha3nement de commandes lors de saisies d')crans." TRNLOG` X %Sousprogramme de translation d'un nom logique." *[EXE]BUROTIK.EXE;41+,q#./ 4-0123 KPWO56`|47s489@<΂GHJ N :0DX0205(4ahBUROTIK01 405-05 k m y  ?B!d FORRTL_001! LIBRTL_001!f SMGSHR_001PBurotik$MNUBURO$VERSIONBURO$SOCIETEBURO$SERVICEBURO$TITRE_MNUBuro$actionPDplacement : , , Slection : ) Burotik (A***17/11/58 00:00:00.00 LNM$SYSTEM_TABLE& .: J j<NxddN,NzNP $H 0\ =x JWt((P*@MNt*(h0h   hl $xhl| fdlP@@$<OOX`<,MM<,@@JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC010203040506070809101112(?xppp`ph`hpx(x` P;<# H@ |||HxxTT: h^ ` ` P Touches O`[Ы\Q(4P d PVlPtPX|˔ ˤ˴Yi~(Yd;Y*ŏPYP,O P@YŏPYP(P@;ZY1ŏPZP@ŏNZW,n NGJ'~ *GK'ϝ~*NGEGJ'PP\P\WE~*tZPWPďNPN@c C@W$'YZkԫ ,2> N,b N`,k Lb lE}˶~ ^( n ^( n}˾~^(0nX^(X˩nXW?WZ ^( n Z,Zn NPQ^kԫԫ48V|ˀ˄%kԫ@P\NN\\\YYPPV\V^\^˼"Y^ЫYЫ$@ѫDYիDŏNDY(NIEvNYYP@v YP Y随NPPv PH[kP޼ ޼ ޼ ޼$м SмO޼0,K[$0Ы\@V\W,n P˰PP^\QR\QRSC˰SS ;B˰SS 0RVVS\T\S TUE˰XXUW+STQRP V\P@˰PP \WWXVYVW1YRB˰TTmT 0LTXzT B˰ d:ˀoˌ˔˘>( YVˤp1uXYW\Hx[kpHl[kdH[}PQ} PQ ռ1Ѽ1PPM, HP1VVP)@KVPQ(@A ߻ P/@ P/@ P(@ )  } / / 1 V1 P(@ P(@ VVP)@3VP(@Ⱛߐ--尫~19~Ў, _ 1 V1!4 , , 9 VVP)@3VPW(@G ߻ P/@ P/@ P(@ 1 V1

Y:4Y#Լ0&4Y'0Y#$Y1 (XK`bիЫP@TkԫIիCk2ԫ9Pի/P2*@TPP@TЫ$@Ы @kPЫ4I[kV} PQ$P ޫ PzW@P JXռHPsRWHR CB7B$BLRW dXlpBVkԼԼRWt4|H ːGˤ ޼˼޼˰,n P< P, @0 P <DWGVW@Wc;c Broad_ast : S/P externe appel ds qu'un message est reucAc----- Il est obligatoire d'avoir cr au pralable le Pasteboard$c ( Smg$create_pasteboard (Paste) )c IMPLICIT INTEGER(A-Z) INCLUDE '($SMGDEF)' External Broad_astc Common /Broad/ Disp, Past Msg = ' ' Nb_lig = 1 Nb_col = 80c: Call SMG$CREATE_VIRTUAL_DISPLAY (Nb_lig, Nb_col, Display)= Call SMG$PASTE_VIRTUAL_DISPLAY (Display, Paste, Pos_lig, 1) Disp = Display Past = Paste3 Call SMG$SET_BROADCAST_TRAPPING (Paste, Broad_ast) ENDcBc----------------------------------------------------------------- Subroutine Broad_ast Bc-----------------------------------------------------------------c;c----- Si en premier caractre, on s'attend avoir :1c ............text.........../c On imprime <-------------->c:c----- Si en premier caractre, on s'attend avoir :$c ....text........"c On imprime <-------------->cCc----- On limine les "BELL", par contre on en provoque 2 au dbut.c IMPLICIT INTEGER(A-Z) INCLUDE '($SMGDEF)' Common /Broad/ Display, Paste Character*1024 Msg Character*80 Lignec7c----- Mmorisation du display avant de lire le messagec/ Call SMG$FIND_CURSOR_DISPLAY (Paste, Disp_act)c4 Call SMG$GET_BROADCAST_MESSAGE (Paste, Msg, Lg_msg) Call SMG$RING_BELL (Display)c Ideb = 1 Ifin = Lg_msg Ligne = ' '# If (Ichar( Msg(1:1)) .EQ. 27) Thencc----- dtect au dbutc Do I = 2, Lg_msg) If (Ichar( MSG(i:i)) .EQ. 13) Then. If (Ichar( MSG(i+1:i+1)) .EQ. 10) Thencc----- + dtectsc Ideb = i + 2 Do j = Lg_msg, Ideb+1, -10 If (Ichar( MSG(j:j)) .EQ. 27) Then Ifin = j-1 Go to 100 End if End do End if End if End do Elsec3c----- On limine + du dbut et de la finc1 If (Ichar( MSG(1:1)) .EQ. 13) Ideb = Ideb + 2? If (Ichar( MSG(lg_msg-1:lg_msg-1)) .EQ. 13) IFin = Ifin - 2 End if 100 Continue Do I = Ideb, Ifincc----- On limine le BELLc$ If (Ichar ( Msg(i:i) ) .NE. 7) Then( If (Ichar ( Msg(i:i) ) .NE. 13) Then2 Call STR$COPY_DX (ligne(1:79), ligne(2:80))c%c----- Remplacer autres par ' 'c) If (Ichar (Msg(I:I)) .NE. 27) Then Ligne(80:80) = Msg(I:I) Else Ligne(80:80) = ' ' End ifA Call SMG$PUT_CHARS (display, ligne, 1, 1, , smg$m_reverse) Else Call LIB$WAIT (5.)2 Call STR$COPY_DX (ligne(1:77), ligne(4:80)) Ligne(78:80) = '***' Ideb = I + 2A Call SMG$PUT_CHARS (display, ligne, 1, 1, , smg$m_reverse) Go to 100 End if  End if End doc/c----- Remettre le curseur sa place d'originec# Call SMG$SET_CURSOR_ABS (Disp_act) Return EndcBc----------------------------------------------------------------- Subroutine Disable_BroadBc-----------------------------------------------------------------c IMPLICIT INTEGER(A-Z) INCLUDE '($SMGDEF)' Common /Broad/ Display, Paste, Call SMG$DISABLE_BROADCAST_TRAPPING (Paste) Return EndcBc----------------------------------------------------------------- Subroutine Enable_BroadBc-----------------------------------------------------------------c IMPLICIT INTEGER(A-Z) INCLUDE '($SMGDEF)' External Broad_ast Common /Broad/ Display, Paste3 Call SMG$SET_BROADCAST_TRAPPING (Paste, Broad_ast) Return End*[KIT]BROAD.OBJ;8+,./ 4f-0123KPWO56P47"^489@<΂GHJ N 0BROAD0112-Oct-1990 10:2112-Oct-1990 10:21VAX FORTRAN V5.4-79 BROAD P BROADP BROAD_ASTPH[kP޼ SMG$CREATE_VIRTUAL_DISPLAY޼ ޼ ޼$SMG$PASTE_VIRTUAL_DISPLAYм м޼0,SMG$SET_BROADCAST_TRAPPING HBROAD BROAD_ASTSMG$CREATE_VIRTUAL_DISPLAYSMG$PASTE_VIRTUAL_DISPLAYSMG$SET_BROADCAST_TRAPPINGS$CODE$PDATA8$LOCALBROAD"uS4 BROAD_AST0112-Oct-1990 10:2112-Oct-1990 10:21VAX FORTRAN V5.4-79 BROAD_ASTPA BROAD_ASTdPPPdTOOlMMlPPKP[$SMG$FIND_CURSOR_DISPLAYpq~BUROTIK020.SAV[KIT]BROAD.OBJ;8_0SMG$GET_BROADCAST_MESSAGEЫ\@ SMG$RING_BELLV\W,n P˰PP\QR\RSC˰SS B˰SS RVVS\T\STUE˰XXUWSTQRP Vü\P@˰PP \WWXVYVW1YRB˰TTT LTX STR$COPY_DXTB˰ d SMG$PUT_CHARSˀLIB$WAIT𞫰ˌ˔˘ STR$COPY_DX( YVˤ SMG$PUT_CHARS1uXYSMG$SET_CURSOR_ABS\ P*** K BROAD_ASTSMG$FIND_CURSOR_DISPLAYSMG$GET_BROADCAST_MESSAGE SMG$RING_BELL STR$COPY_DX SMG$PUT_CHARSLIB$WAITSMG$SET_CURSOR_ABSV$CODE$PDATA$LOCALBROAD}=P^HPQZP;eP0uP PP+PPPPPmP0P P P:k_x V8 DISABLE_BROAD0112-Oct-1990 10:2112-Oct-1990 10:21VAX FORTRAN V5.4-79 DISABLE_BROAD DISABLE_BROADEPPH[kSMG$DISABLE_BROADCAST_TRAPPINGw H DISABLE_BROADSMG$DISABLE_BROADCAST_TRAPPING$CODE$PDATA$LOCALBROAD i7 ENABLE_BROAD0112-Oct-1990 10:2112-Oct-1990 10:21VAX FORTRAN V5.4-79 ENABLE_BROAD ENABLE_BROADMP BROAD_ASTPH[kSMG$SET_BROADCAST_TRAPPING H ENABLE_BROAD BROAD_ASTSMG$SET_BROADCAST_TRAPPING$CODE$PDATA $LOCALBROAD k*[KIT]BUROTIK.EXE;9+, ./ 4-0123 KPWO567@DŽ89@<΂GHJ N :0DX0205('`hBUROTIK01h'05-05 k m y  ?B!d FORRTL_001! LIBRTL_001!f SMGSHR_001PBurotik$MNUBURO$VERSIONBURO$SOCIETEBURO$SERVICEBURO$TITRE_MNUBuro$actionPDplacement : , , Slection : ) Burotik (A***17/11/58 00:00:00.00 LNM$SYSTEM_TABLE& .: J j<NxddN,NzNP $H 0\ =x JWt((P*@MNt*(h0h   hl $xhl| fdlP@@$<OOX`<,MM<,@@JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC010203040506070809101112(?xppp`ph`hpx(x` P;<# H@ |||HxxTT: h^ ` ` P Touches O`[Ы\Q(4P d PVlPtPX|˔ ˤ˴Yi~(Yd;Y*ŏPYP,O P@YŏPYP(P@;ZY1ŏPZP@ŏNZW,n NGJ'~ *GK'ϝ~*NGEGJ'PP\P\WE~*tZPWPďNPN@c C@W$'YZkԫ ,2> N,b N`,k Lb lE}˶~ ^( n ^( n}˾~^(0nX^(X˩nXW?WZ ^( n Z,Zn NPQ^kԫԫ48V|ˀ˄%kԫ@P\NN\\\YYPPV\V^\^˼"Y^ЫYЫ$@ѫDYիDŏNDY(NIEvNYYP@v YP Y随NPPv PH[kP޼ ޼ ޼ ޼$м SмO޼0,K[$0Ы\@V\W,n P˰PP^\QR\QRSC˰SS ;B˰SS 0RVVS\T\S TUE˰XXUW+STQRP V\P@˰PP \WWXVYVW1YRB˰TTmT 0LTXzT B˰ d:ˀoˌ˔˘>( YVˤp1uXYW\Hx[kpHl[kdH[}PQ} PQ ռ1Ѽ1PPM, HP1VVP)@KVPQ(@A ߻ P/@ P/@ P(@ )  } / / 1 V1 P(@ P(@ VVP)@3VP(@Ⱛߐ--尫~19~Ў, _ 1 V1!4 , , 9 VVP)@3VPW(@G ߻ P/@ P/@ P(@ 1 V1

Y:4Y#Լ0&4Y'0Y#$Y1 (XK`bիЫP@TkԫIիCk2ԫ9Pի/P2*@TPP@TЫ$@Ы @kPЫ4I[kV} PQ$P ޫ PzW@P JXռHPsRWHR CB7B$BLRW dXlpBVkԼԼRWt4|H ːGˤ ޼˼޼˰,n P< P, @0 P <DWGVW@Wc * 'Applications disponibles', Table_menu, Nb_fic,0c * Efface , Attente , Nfen , Numfen,c * Ichoix , Ifen0 )4200 Call Fenetre (6, 1, (Nblin + 2), (Lg_menu + 2), 7 * Buro_titre(1:Lg_tit), Table_menu, Nb_fic,/ * Efface , Attente , Nfen , Numfen, * Ichoix , Ifen0 ) Numfen = Ifen0" If (Ichoix .GT. Nb_fic) Go To 200! If (Ichoix .GT. 0) Nfen = Ichoixc "c APPEL DES S-P CORRESPONDANTSc Menu_action = Action(Ichoix) Do I = 78, 1, -1' If (Menu_action(I:I) .NE. ' ') Then Ifin = I Go to 210 End if End do Ifin = 78>210 Call Lib$Set_Symbol ( 'Buro$action', Menu_action(1:Ifin) ) Call Disable_broad) Istat = Smg$Delete_PasteBoard ( Paste )10 Format (A80) End*[KIT]BUROTIK.OBJ;17+,'. / 4 -0123KPWO 56_{47~489@<΂GHJ N  2BUROTIK0112-Oct-1990 10:2112-Oct-1990 10:21VAX FORTRAN V5.4-79BUROTIK|PPBurotik$MNUBURO$VERSIONBURO$SOCIETEBURO$SERVICEBURO$TITRE_MNUBuro$actionPBUROTIKP& .: J j<NxddN,NzNP $H$ LIB$GET_SYMBOL@ 0\0 TRNLOG@ =x= TRNLOG@ JJ TRNLOG@WW TRNLOG@t((P*@MNt*(h0h   hl  $xhl| fdf LIB$SET_SYMBOL@lPP Touches :PLNM$SYSTEM_TABLEPOh[Ы\SMG$CREATE_PASTEBOARDLIB$GET_SYMBOLTRNLOGTRNLOG4TRNLOGPTRNLOGdNCHPVlNCHPtNCHPX| LIB$GETJPI˔ LIB$GETSYI ˤTDATE˴FOR$OPENY~r( FOR$READ_SF FOR$IO_T_DS FOR$IO_ENDYdY*ŏPYP,O P@YŏPYP(P@ FOR$CLOSEZY1ŏPZP@FOR$OPENŏNZW,n NGJ'~r* FOR$READ_SFGK' FOR$IO_T_DS FOR$IO_END~r* FOR$READ_SFꛏNGE FOR$IO_T_DS FOR$IO_ENDGJ'NCHPP\P\W~r* FOR$READ_SFZPWPďNPN@c  FOR$IO_T_DSn FOR$IO_ENDW$ FOR$CLOSEYZkԫ ,2u N, N`, COMMENTAIREL COMMENTAIRElBROAD}˶~ ^( n ^( n}˾~^(nX^(X˩nXW?WZ ^( n Z,Zn NPQ^kԫԫ48V|ˀ˄FENETREkԫ@P\NN\\\YYPPV\V^\^˼"YFENETRE^ЫYЫ$@ѫDYիDŏNDY(NIEvNYYP@v YPY随NPPv LIB$SET_SYMBOL DISABLE_BROADSMG$DELETE_PASTEBOARDPuPDplacement : , , Slection : Q Burotik (Q) v OBUROTIKSMG$CREATE_PASTEBOARDLIB$GET_SYMBOLTRNLOGNCH LIB$GETJPI LIB$GETSYITDATEFOR$OPEN FOR$CLOSE COMMENTAIREBROADFENETRELIB$SET_SYMBOL DISABLE_BROADSMG$DELETE_PASTEBOARD$CODE$PDATA$LOCALFENETREkFENTOU FOR$IO_END FOR$IO_T_DS FOR$READ_SFPiPP;PPPHPyPPPEPPPJPsPxP v*[KIT]COMMENTAIRE.FOR;2+, . / 4K h-0123KPWO 5 6,N7@}y89@<΂GHJ N  Hc**********************************************************************cHc**********************************************************************cBc Cette routine permet d'afficher un commentaire, c'est a dire cBc une fenetre sans cadre ni titre , et de l'effacer ou non en cc sortant. cHc**********************************************************************cHc**********************************************************************c) Subroutine COMMENTAIRE ( Ligne, Colonne,3 * Ctab, Code_ef, Num, Rang, Com_no)Hc-----------------------------------------------------------------------cc Arguments d'entree :c ------------------c6c Ligne (I*4) : No de ligne (positionnement):c Colonne (I*4) : No de colonne (positionnement)=c Ctab (C(*)(*)): Table contenant les informations a editerBc Code_ef (L) : Indicateur d'effacement de la fenetre en cours,c : avant de revenir au programme appelant8c Num (I*4) : Numero de fenetre existante a reaffichercc Arguments de sortie :c -------------------c:c Rang (I*4) : Retour = - 1 erreur dans les parametres1c : = - Nb_elm (touches +)*c : = 0 abandon (touche )(c : >0 et )(c : >Nb_elm rang dans CTAB $c : (touche )7c Com_no (I*4) : No de la fenetre si code_ef est fauxc c Remarques : c ---------c@c 1- Le programme appelant doit creer le pasteboard et mettre le(c paste_id dans le common /fenetre/ :c8c Instructions a ajouter dans le programme appelant :c/c Integer Paste, Status, Smg$create_pasteboardc Common / Fenetre / Pastec)c Status = Smg$create_pasteboard (Paste))c If ( .NOT. Status) ==> erreur detecteecCc 2- La fenetre doit etre entierement visible, donc il faut ajuster3c les parametres (ligne, colonne, nb_l et nb_c).cKc--------------------------------------------------------------------------c Implicit Integer (a-z) Include '($Smgdef)'> Parameter Max_Com = 10 ! Nombre max de commentaires possibles Logical Code_ef Character*(*) Ctab(*) Character*80 Cblanc Common /Commentaire/< * No_com(Max_Com),IDisp_Com(Max_com),IKeyb_Com(Max_com)  Common /Fenetre / Paste Data Nb_com, Un * / 0 , 1 / Data Cblanc / ' ' /cHc-----------------------------------------------------------------------ccHc------- Cratio0oH~BUROTIK020.SAV [KIT]COMMENTAIRE.FOR;2K nn du virtual display et du virtual keyboard ------------c (si Num = 0)c Numero = 0 Nb_c = Nch(Ctab) Nb_l = 1 If (Num .Le. 0) Then4 Istatus = Smg$Create_virtual_keyboard (Keyboard)- Istatus = Smg$Create_virtual_display & * (Nb_l, Nb_c , Display, ) ElsecGc------------- Recherche de la fenetre NUM ----------------------------c I = 14 Do While ((numero .Eq.0) .AND. (I .Le. Max_Com))# If (No_Com(I) .Eq. Num) Then Display = Idisp_com(I) Keyboard = Ikeyb_com(I) Numero = I If (Code_ef ) Thenc(c----- Detruire la fenetre NUM et returnc< Istatus = Smg$Delete_virtual_keyboard (Keyboard)> Istatus = Smg$Delete_virtual_display (Display) No_com(numero) = 0' Nb_com = Nb_com - 1 Numero = 0 Com_no = Numero Rang = 0 Return End if Else I = I + 1 End if End do If (Numero .Le. 0) Then7 Istatus = Smg$Create_virtual_keyboard (Keyboard)0 Istatus = Smg$Create_virtual_display ( * (Nb_l, Nb_c , Display,) Else0 Istatus = Smg$Change_virtual_display / * (Display, Nb_l , Nb_c ,) End if End ifc)c----- Mettre le keypad en mode numeriquec. Istatus = Smg$Set_keypad_mode ( Keyboard, 0)$ Istatus = Smg$Paste_virtual_display1 * (Display, Paste, Ligne, Colonne) Lg = Nb_c Rang = 1 Irang = RangcHc-------------- Effacement de la fenetre -------------------------------c- Istatus = Smg$Set_cursor_abs (Display, 1, 1) Cblanc = ' '/ Istatus = Smg$Put_line (Display, Cblanc(1:Lg),3 * Un, Smg$M_bold, , , ,Smg$M_up)c*c-------------- Si explication du contenu c- Istatus = Smg$Set_cursor_abs (Display, 1, 1) Cblanc = Ctab(1)/ Istatus = Smg$Put_line (Display, Cblanc(1:Lg),3 * Un, Smg$M_bold, , , ,Smg$M_up)c*c----- Reafficher la fenetre NUM et returnc Term = smg$k_trm_F11 Rang = 1 If (Code_ef) ThencHc----------------------- Detruire la fenetre ---------------------------c4 Istatus = Smg$Delete_virtual_keyboard (Keyboard)6 Istatus = Smg$Delete_virtual_display (Display) If (Numero .Gt. 0) Then No_com(Numero) = 0" Nb_com = Nb_com - 1 Numero = 0 End if ElsecHc------------------ Sauvegarder la fenetre -----------------------------c If (Numero .Le. 0) Then$ If (Nb_com .Ge. Max_Com) Then Numero = 0 Else I = 14 Do While ( (Numero .Eq.0) .And. (I .Le. Max_Com) ) If (No_com(I) .Eq. 0) Then Numero = I" No_com(Numero) = Numero# IDisp_com(Numero) = Display$ IKeyb_com(Numero) = Keyboard& Nb_com = Nb_com + 1 Else I = I + 1 End if End do End if End if End ifc$c----- Fin -------------------------c Com_no = Numero Return End*[KIT]COMMENTAIRE.OBJ;7+,X./ 4-0123KPWO56*47@'489@<΂GHJ N 6 COMMENTAIRE0112-Oct-1990 10:2212-Oct-1990 10:22VAX FORTRAN V5.4-79 COMMENTAIREP COMMENTAIREhPp`\Xd`d`\Xdd\X`ddd$Tdd`T`dQQ  O'PIP[kV} PQ$P ޫ PFOR$INI_DES1_R2W@NCHP XռHSMG$CREATE_VIRTUAL_KEYBOARDPSMG$CREATE_VIRTUAL_DISPLAYRWR BB$BLRWdSMG$DELETE_VIRTUAL_KEYBOARDlSMG$DELETE_VIRTUAL_DISPLAYBVkԼԼRWtSMG$CREATE_VIRTUAL_KEYBOARD|SMG$CREATE_VIRTUAL_DISPLAYːSMG$CHANGE_VIRTUAL_DISPLAYˤSMG$SET_KEYPAD_MODE޼˼޼˰SMG$PASTE_VIRTUAL_DISPLAYSMG$SET_CURSOR_ABS,n P SMG$PUT_LINESMG$SET_CURSOR_ABS< P, @0 P SMG$PUT_LINE<SMG$DELETE_VIRTUAL_KEYBOARDDSMG$DELETE_VIRTUAL_DISPLAYWGVWWV WPWP @PWP@Ы@$Ы@LVPWVk I COMMENTAIRENCHSMG$CREATE_VIRTUAL_KEYBOARDSMG$CREATE_VIRTUAL_DISPLAYSMG$DELETE_VIRTUAL_KEYBOARDSMG$DELETE_VIRTUAL_DISPLAYSMG$CHANGE_VIRTUAL_DISPLAYSMG$SET_KEYPAD_MODESMG$PASTE_VIRTUAL_DISPLAYSMG$SET_CURSOR_ABS SMG$PUT_LINE$CODE$PDATA$LOCALx COMMENTAIREFENETREFOR$INI_DES1_R2?PQPs[PH`PChP7{P PPP CP YPcP@gP<lPpP3{P(P#PP *[KIT]FENETRE.FOR;7+, ./ 4M-0123KPWO56^<ޓ7m89@<΂GHJ N Hc**********************************************************************cHc**********************************************************************cGc Cette routine affiche une fenetre , avec cadre et titre. cBc Elle permet d'attendre une reponse, et de se promener dans cCc la table. Elle permet d'effacer ou non en sortant. cHc**********************************************************************cHc**********************************************************************c1 Subroutine FENETRE ( Ligne, Colonne, Nb_l, Nb_c,9 * Titre, Ctab, Nb_elm, Code_ef, Code_att,% * Numdeb, Num, Rang, Fen_no)Hc-----------------------------------------------------------------------cc Arguments d'entree :c ------------------c6c Ligne (I*4) : No de ligne (positionnement):c Colonne (I*4) : No de colonne (positionnement)*c Nb_l (I*4) : Nombre de lignes (taille)/c Nb_c (I*4) : Nombre de colonnes (taille)4c Titre (C(*)): Titre de la fenetre [et des infos]=c Ctab (C(*)(*)): Table contenant les informations a editer,c Nb_elm (I*4) : Nombre d'elements de CTABBc Code_ef (L) : Indicateur d'effacement de la fenetre en cours,c : avant de revenir au programme appelant2c Code_att (L) : Indicateur d'attente de toucheBc Numdeb (I*4) : Numero de la ligne ou se positionner au depart8c Num (I*4) : Numero de fenetre existante a reaffichercc Arguments de sortie :c -------------------c:c Rang (I*4) : Retour = - 1 erreur dans les parametres1c : = - Nb_elm (touches +)*c : = 0 abandon (touche )(c : >0 et ),c : = Nb_elm + 1 (touche )7c Fen_no (I*4) : No de la fenetre si code_ef est fauxcc Touches employeesc -----------------c$c : remonte d'une ligne&c : descend d'une ligne*c : affiche la page suivante +c : affiche la page precedente%c + : debut de CTAB%c + : fin de CTABc : abandon+c ou ou c ou soit detectee.MccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccB Do While ((Term .NE. smg$k_trm_select) .AND. (Term .NE. Pf1_esc )7 * .AND. (Term .NE. smg$k_trm_F11) .AND.* * (Term .Ne. smg$k_trm_ctrlm) .AND.* * (Term .Ne. smg$k_trm_enter) .AND.# * (Term .Ne. smg$k_trm_cr) ) Call razbuf1 istatus = smg$read_keystroke (keyboard, Term)c% If (Term .EQ. smg$k_trm_pf1) Then Term_sav = Term5 istatus = smg$read_keystroke (keyboard, Term)! Term = Term_sav + Term End ifc"c------------------- + c If (Term .EQ. Pf1_esc) Then Rang = - Nb_elm Go to 300 End ifc(c------------------- ou c& If (Term .EQ. smg$k_trm_enter .OR.* * Term .EQ. smg$k_trm_cr) Then Rang = Nb_elm + 1 Go to 300 End if' If (Term .EQ. smg$k_trm_down ) thencFc----- Faire descendre l'information ---------------------------------c! If (rang+1 .GT. Ifin) Then If (Ifin+1 .LE. Nb_elm) Then Ideb = Ideb + 1 Ifin = Ifin + 1 rang = rang + 1 Go to 200 Else Term = bottom- istatus = smg$ring_bell (display) End if Else Cblanc = Ctab(rang)3 Istatus = smg$put_line (display, Cblanc(1:Lg),7 * Un, Smg$m_normal, , , ,smg$m_up) Irang = Irang + 1 rang = rang + 1 Cblanc = Ctab(rang)3 Istatus = smg$put_line (display, Cblanc(1:Lg),8 * Un, Smg$m_reverse, , , ,smg$m_up)5 istatus = smg$set_cursor_abs (display, Irang, 1) End if Else' If (Term .EQ. smg$k_trm_up) thencEc----- Faire remonter l'information ---------------------------------c If (rang-1 .LT. Ideb) Then If (Ideb-1 .GE. 1) Then Ideb = Ideb - 1 Ifin = Ifin - 1 rang = rang - 1 Go to 200 Else Term = Top1 istatus = smg$ring_bell (display) End if Else Cblanc = Ctab(rang)4 Istatus = smg$put_line (display, Cblanc(1:Lg),> * Un, Smg$m_normal, , , ,smg$m_down) Irang = Irang - 1 rang = rang - 1 Cblanc = Ctab(rang)4 Istatus = smg$put_line (display, Cblanc(1:Lg),? * Un, Smg$m_reverse, , , ,smg$m_down)6 istatus = smg$set_cursor_abs (display, Irang, 1) End if End if End if. If (Term .EQ. smg$k_trm_prev_screen ) thencGc--------------------- Page precedente --------------------------------c If (Ideb .LE. 1) Then Term = Top* istatus = smg$ring_bell (display) Else Dscroll = val_scroll8 If (Ideb - val_scroll .LT. 1) Dscroll = Ideb - 1 Ideb = Ideb - Dscroll Ifin = Ifin - Dscroll! Irang = (Ifin - Ideb) / 2 + 1 Rang = Ideb + Irang -1 Go to 200 End if Else1 If (Term .EQ. smg$k_trm_next_screen ) thencHc---------------------- Page suivante ----------------------------------c" If (Ifin .GE. Nb_elm) Then Term = bottom- istatus = smg$ring_bell (display) Else Dscroll = val_scrollF If (Ifin + val_scroll .GT. Nb_elm) Dscroll = Nb_elm - Ifin # Ideb = Ideb + Dscroll# Ifin = Ifin + Dscroll$ Irang = (Ifin - Ideb) / 2 + 1 Rang = Ideb + Irang -1 Go to 200 End if End if End if  If (Term .EQ. Top ) thencHc------------------------------ Top ------------------------------------c Ideb = 1 Ifin = val_scroll Irang = Ideb Rang = Ideb Go to 200 Else" If (Term .EQ. bottom ) thencHc------------------------------ bottom ---------------------------------c* Ideb = Nb_elm - val_scroll+1 Ifin = Nb_elm Irang = val_scroll Rang = Ifin Go to 200 End if End if) If (Term .NE. smg$k_trm_select ) Then) If (Term .EQ. smg$k_trm_F11 ) Then Rang = 0 Else9 If ((Term .EQ. smg$k_trm_help) .AND. aide ) Then Rang = Rang + Nb_elm Else If (Term .NE. Pf1_esc) Then If (code_att) Term = 222 End if End if End if End if Go to 300Fc---------------------------------------------------------------------c----- AffichageFc---------------------------------------------------------------------c3200 istatus = smg$set_cursor_abs (display, 1, 1) Do I = Ideb, Ifin Cblanc = Ctab(I)5 Istatus = smg$put_line (display, Cblanc(1:Lg),@ * Un, Smg$m_normal, , , ,smg$m_up) End do Cblanc = Ctab(rang)4 istatus = smg$set_cursor_abs (display, Irang, 1)2 Istatus = smg$put_line (display, Cblanc(1:Lg),= * Un, Smg$m_reverse, , , ,smg$m_up)4 istatus = smg$set_cursor_abs (display, Irang, 1) Term = 222c300 ContinueMccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc End doMcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,c----- Touche