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.