1. Utilitaires pour les structures de données#
SUBROUTINE COPISD ( TYPESD, BASE, SD1, SD2 )
But : dupliquer une structure de donnée (SD1) sous un autre nom (SD2). SD2 aura le même contenu que SD1.
IN |
TYPESD |
K* |
type des 2 structures de données SD1et SD2. Voir la liste des types permis aujourd’hui dans l’entête de la routine fortran |
IN |
BASE |
K1 |
“G” / “V” : nom de la base où sera créé SD2 |
IN JXIN |
SD1 |
K* |
nom de laSD SD1 |
IN JXOUT |
SD2 |
K* |
nom de laSD SD2 |
LOGICAL FUNCTION IDENSD (TYPESD,SD1,SD2)
But : tester l’identité du contenu de 2 structures de données SD1 et SD2
IN |
TYPESD |
K* |
type des 2 structures de données à comparer. Voir la liste des types permis aujourd’hui dans l’entête de la routine fortran |
IN JXIN |
SD1 |
K* |
nom de laSD SD1 |
IN JXIN |
SD2 |
K* |
nom de la SD SD2 |
OUT |
IDENSD |
L |
.TRUE. : les 2SD SD1et SD2sont identiques .FALSE. : les 2SD SD1et SD2sont différentes |
SUBROUTINE EXISD (TYPESD,NOMSD,IRET)
But : répondre à la question : “existe-t-il une structure de donnée de type TYPSD et de nom NOMSD?”.
IN |
TYPESD |
K* |
type de la structure de données à tester. Voir la liste des types permis aujourd’hui dans l’entête de la routine fortran |
IN JXIN |
NOMSD |
K* |
nom de la SD à tester |
OUT |
IRET |
I |
0 : la structure de donnée n’existe pas 1 : la structure de donnée existe |
SUBROUTINE DETRSD (TYPESD,NOMSD)
But : détruire une structure de donnée de type TYPSD et de nom NOMSD. C’est-à-dire détruire tous les objets JEVEUX qui la composent.
IN |
TYPESD |
K* |
Type de la structure de données à tester. Voir la liste des types permis aujourd’hui dans l’entête de la routine fortran |
IN JXIN |
NOMSD |
K* |
nom de la SD à détruire |
SUBROUTINE IMPRSD (TYPESD, NOMSD, IFIC, TITRE)
But : imprimer «lisiblement» une structure de données
IN |
TYPESD |
K* |
Type de la structure de données à tester. Types permis aujourd’hui : CHAMP, CHAMP_S |
IN JXIN |
NOMSD |
K* |
nom de la SD à imprimer |
IN |
IFIC |
I |
numéro logique du fichier ASCII pour l’impression |
IN |
TITRE |
K* |
titre donné à l’impression. |
SUBROUTINE UTIMSD (IFIC, NIVEAU, LATTR, LCONT, SCH1, IPOS, BASE)
But : Imprimer totalement une structure de données. C’est-à-dire imprimer le contenu «brut» des objets JEVEUX qui la compose.
En réalité, on ne traite pas vraiment de structures de données : on recherche tous les objets JEVEUX dont le nom contient une certaine chaîne de caractères. Mais il se trouve qu’en général, tous les objets d’une SD ont des noms commençant par la même chaîne.
IN |
IFIC |
I |
unité logique d’impression |
IN |
NIVEAU |
I |
niveau d’impression voulu : 0 : impression du seul nom des objets. 1 : pour les collections, on n’imprimera que les 10 1ers objets.. 2 : on imprime tous les objets de collection -1 : on imprime un “résumé” des objets : une seule ligne par objet. |
IN |
LATTR |
L |
.TRUE. : on imprime les attributs des objets JEVEUX .FALSE. : on n’imprime pas les attributs des objets JEVEUX |
IN |
LCONT |
L |
.TRUE. : on imprime les valeurs des objets JEVEUX .FALSE. : on n’imprime pas les valeurs des objets JEVEUX |
IN |
SCH1 |
K* |
chaîne de caractères permettant de sélectionner les objets à imprimer. La déclaration de cette chaîne est très importante (sa longueur), car elle conditionne le nombre d’objets trouvés. si SCH1=”TOTO’mais que SCH1est déclarée K19, on n’imprimera que les objets commençant par “TOTO’suivi de 15 blancs. |
IN |
IPOS |
I |
position à laquelle on recherchera le 1er caractère de SCH1. |
IN |
BASE |
K1 |
nom de la base JEVEUXsur laquelle on recherche les objets.”G”, “V”, … si “ “ : on recherche sur toutes les bases ouvertes. |
Exemple1 :
CALL UTIMSD(6,2,.FALSE.,.TRUE.,CHAMP(1:19),1,'V')
fait le «dump» du champ nommé CHAMP et qui se trouve sur la base VOLATILE. On n’imprime pas les attributs des objets JEVEUX. Le résultat est imprimé dans le fichier .mess.
Exemple2 :
CALL UTIMSD(8,0,.FALSE.,.FALSE..,'.DESC',20,' ')
écrit le nom de tous les objets dont le nom contient la chaîne “.DESC” en position 20. Le résultat est imprimé dans le fichier .resu.