Philippe 11/09/2017: IO: NEWLFI: length of record name is set with LEN_HREC
[MNH-git_open_source-lfs.git] / src / LIB / NEWLFI / src / lficom0.h
1 !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
3 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
4 !MNH_LIC for details. version 1.
5 C
6 C----- DESCRIPTION DES "PARAMETER" DU LOGICIEL DE FICHIERS INDEXES -----
7 C-----  (et des variables logiques a charger absolument partout )  -----
8 C
9 C     JPNBIM = NOMBRE DE BITS PAR MOT MACHINE
10 C     JPNBIC = NOMBRE DE BITS PAR CARACTERE
11 C     JPNCMO = NOMBRE DE CARACTERES PAR MOT MACHINE
12 C
13 C     JPNCPN = NOMBRE MAXI. POSSIBLE DE CARACTERES PAR NOM D'ARTICLE
14 C     JPLARD = LONGUEUR D'ARTICLE "PHYSIQUE" elementaire des Fichiers
15 C              ( exprimee en mots, DOIT ETRE PAIRE, SUPERIEURE OU EGALE
16 C                a JPLDOC, JPLARD*JPNCMO DOIT ETRE MULTIPLE DE JPNCPN )
17 C     JPLARC = Longueur d'article "physique" exprimee en caracteres
18 C     JPRECL = PARAMETRE "RECL" de base POUR "OPEN" DES FICHIERS
19 C     JPNXFI = NOMBRE MAXIMUM DE FICHIERS INDEXES OUVERTS SIMULTANEMENT
20 C              (1 fichier de "multiplicite" N comptant comme N fichiers)
21 C     JPFACX = FACteur multiplicateur maXimum entre longueur d'article
22 C              physique effective et elementaire ( de 1 a JPNXFI )
23 C     JPXUFM = Nombre maXimum d'Unites logiques a Facteur Mul. predefini
24 C     JPNPIA = NOMBRE DE *PAIRES* DE "PAGES D'INDEX" EN MEMOIRE
25 C              *PREALLOUEES* PAR UNITE LOGIQUE ( AU MOINS *4* )
26 C     JPNXPI = NOMBRE TOTAL DE *PAIRES* DE "PAGES D'INDEX" EN MEMOIRE
27 C              ALLOUABLES ( DOIT ETRE AU MOINS EGAL A JPNPIA*JPNXFI )
28 C     JPNPIS = NOMBRE DE *PAIRES* DE "PAGES D'INDEX" NON PREALLOUEES
29 C     JPNXNA = NOMBRE MAXI. DE NOMS D'ARTICLES PAR PAGE/ARTICLE D'INDEX
30 C     JPNBLP = NOMBRE MAXI. DE COUPLES (LONGUEUR/POSITION)"   "     "
31 C     JPNAPP = NOMBRE MAXI. UTILE DE NOMS D'ARTICLES PAR PAGE/AR D'INDEX
32 C     JPLDOC = LONGUEUR (MOTS) DE LA PARTIE DOCUMENTAIRE DU 1ER ARTICLE
33 C     JPNPDF = NOMBRE DE PAGES DE DONNEES PAR FICHIER OUVERT ( >= 2 )
34 C     JPNXPR = NOMBRE MAXIMUM DE PAIRES D'ARTICLES D'INDEX RESERVABLES
35 C     JPNIL  = CODE DE "VALEUR ABSENTE" POUR CERTAINES TABLES D'ENTIERS.
36 C     JPNMPN = NOMBRE DE MOTS NECESSAIRE AU STOCKAGE D'UN NOM D'ARTICLE
37 C     JPNAPX = JPNAPP*JPFACX
38 C     JPLARX = JPLARD*JPFACX = longueur d'article physique maximale
39 C     JPLFTX = Longueur maximale traitable des noms de fichiers.
40 C     JPLFIX =    "        "     imprimable "   "   "     "    .
41 C     JPLSPX =    "        "   des noms des sous-programmes du logiciel.
42 C     JPLSTX =    "     "  des valeurs du "STATUS" FORTRAN (open/close).
43 C     JPCFMX = Nombre maximum de ConFigurations pour iMport/eXport.
44 C     JPIMEX =    "     "  de fichiers imp/exportables "simultanement".
45 C     JPDEXP = Dimension tableau Descripteurs EXPlicites d'imp/export.
46 C     JPDIMP =     "        "         "       IMPlicites "  "    "   .
47 C     JPXDAM = Nombre maXimum noms D'Articles d'imp/export en Memoire.
48 C     JPXCIE =    "     "     de Caracteres par nom pour Import/Export.
49 C     JPXMET =    "     "     "      "       "   "  avec METacaracteres.
50 C     JPXCCF =    "     "     "      "      des noms de ConFig. imp/exp.
51 C     JPTYMX =    "   de TYpes de variables valides pour Import/Export.
52 C
53 C     LPCRAY = VRAI SI L'ON TRAVAILLE SUR CRAY ( "WHENEQ" UTILISABLE )
54 C     LPRECH = VRAI SI L'ON PEUT UTILISER LA RECHERCHE "RAPIDE" DES NOMS
55 C
56       INTEGER JPNBIM, JPNBIC, JPNCPN, JPLARD, JPNPDF, JPXUFM, JPNXFI
57       INTEGER JPNPIA, JPNXPI, JPNXPR, JPLDOC, JPNIL, JPNCMO, JPLARC
58       INTEGER JPXMET, JPRECL, JPFACX, JPLFTX, JPLFIX, JPLSPX, JPLSTX
59       INTEGER JPIMEX, JPDEXP, JPDIMP, JPXDAM, JPXCIE, JPCFMX, JPXCCF
60       INTEGER JPNXNA, JPNBLP, JPNAPP, JPNPIS, JPNAPX, JPNMPN, JPLARX
61       INTEGER JPTYMX
62 C
63       LOGICAL LPCRAY, LPRECH
64 C
65       PARAMETER ( JPNCPN=LEN_HREC, JPLARD=512, JPNPDF=20, JPXUFM=100 )
66       PARAMETER ( JPNXFI=300, JPFACX=120, JPNPIA=4, JPNXPR=100 )
67 C
68 C     Implementation-dependent symbolic constants (except for JPNCMO and
69 C     JPLARC definitions, which are there to have only one set of
70 C     "ifdef" in current header).
71 C
72 #if defined(RS6K) || defined(VPP) || defined(T3D) || defined(HPPA) || defined(SUN) || defined(O2000) || defined(LINUX) || defined (MNH_SX5)
73       PARAMETER ( JPNBIM=64, JPNBIC=8, LPCRAY=.FALSE. )
74       PARAMETER ( JPNCMO=JPNBIM/JPNBIC )
75       PARAMETER ( JPLARC=JPNCMO*JPLARD )
76       PARAMETER ( JPRECL=JPLARC )
77 #else
78 #if defined(DEC)
79       PARAMETER ( JPNBIM=64, JPNBIC=8, LPCRAY=.FALSE. )
80       PARAMETER ( JPNCMO=JPNBIM/JPNBIC )
81       PARAMETER ( JPLARC=JPNCMO*JPLARD )
82       PARAMETER ( JPRECL=2*JPLARD )
83 #else 
84 #if defined(HP)
85       PARAMETER ( JPNBIM=32, JPNBIC=8, LPCRAY=.FALSE. )
86       PARAMETER ( JPNCMO=JPNBIM/JPNBIC )
87       PARAMETER ( JPLARC=JPNCMO*JPLARD )
88       PARAMETER ( JPRECL=JPLARC )
89 #else
90 #if defined(SX4)
91       PARAMETER ( JPNBIM=64, JPNBIC=8, LPCRAY=.FALSE. )
92       PARAMETER ( JPNCMO=JPNBIM/JPNBIC )
93       PARAMETER ( JPLARC=JPNCMO*JPLARD )
94       PARAMETER ( JPRECL=JPLARD )
95 #else
96
97 C     CRAY IS DEFAULT
98       PARAMETER ( JPNBIM=64, JPNBIC=8, LPCRAY=.TRUE. )
99       PARAMETER ( JPNCMO=JPNBIM/JPNBIC )
100       PARAMETER ( JPLARC=JPNCMO*JPLARD )
101       PARAMETER ( JPRECL=JPLARC )
102 #endif
103 #endif
104 #endif
105 #endif
106       PARAMETER ( JPLDOC=22, JPNIL=-999, JPXMET=2*JPNCPN, JPCFMX=4 )
107       PARAMETER ( JPNXPI=JPNPIA*JPNXFI+2*JPFACX, JPXCIE=2*JPNCPN )
108       PARAMETER ( JPLFTX=512, JPLFIX=128, JPLSPX=6, JPLSTX=7, JPTYMX=5 )
109       PARAMETER ( JPIMEX=2, JPDEXP=10000, JPDIMP=1000, JPXDAM=1000 )
110       PARAMETER ( JPNXNA=(JPLARD*JPNCMO)/JPNCPN, JPNBLP=JPLARD/2 )
111       PARAMETER ( JPNAPP=(JPNBLP*(JPNXNA/JPNBLP)+JPNXNA*(JPNBLP/JPNXNA))
112      S                  /(JPNXNA/JPNBLP+JPNBLP/JPNXNA), JPXCCF=16 )
113       PARAMETER ( JPNPIS=JPNXPI-JPNPIA*JPNXFI, JPNAPX=JPNAPP*JPFACX )
114       PARAMETER ( JPNMPN=1+(JPNCPN-1)/JPNCMO, JPLARX=JPLARD*JPFACX )
115       PARAMETER ( LPRECH=(JPNCPN.EQ.(JPNMPN*JPNCMO)).AND.LPCRAY )
116 C
117 C---------- VARIABLES LOGIQUES A CHARGER ABSOLUMENT PARTOUT ------------
118 C
119 C     LMISOP = VRAI SI ON DOIT TRAVAILLER EN MODE MISE AU POINT LOGICIEL
120 C     LFRANC = Vrai/Faux si la messagerie doit etre en francais/anglais
121 C
122       LOGICAL LMISOP, LFRANC
123 C
124       COMMON /LFIMAP/ LMISOP, LFRANC
125 C
126 C-------- DESCRIPTION DE LA PARTIE DOCUMENTAIRE DU 1ER ARTICLE ---------
127 C
128 C     MOT  1 ==> LONGUEUR "PHYSIQUE" Effective DES ARTICLES (EN MOTS)
129 C     MOT  2 ==> LONGUEUR MAXIMUM DES NOMS D'ARTICLES (CARACTERES)
130 C     MOT  3 ==> "DRAPEAU" SIGNALANT SI LE FICHIER A BIEN ETE FERME
131 C                APRES LA DERNIERE MODIFICATION
132 C     MOT  4 ==> LONGUEUR DE LA PARTIE DOCUMENTAIRE DU FICHIER
133 C     MOT  5 ==> NOMBRE D'ARTICLES "PHYSIQUES" DANS LE FICHIER
134 C     MOT  6 ==>    "        "      LOGIQUES    "    "    "
135 C                (Y COMPRIS LES "TROUS" CREES PAR LES REECRITURES
136 C                 D'ARTICLES PLUS LONGUES QUE PRECEDEMMENT, ET N'AYANT
137 C                 PAS ENCORE PU ETRE REUTILISES, COMPTES DANS LE MOT 21)
138 C     MOT  7 ==> LONGUEUR MINI. DES ARTICLES LOGIQUES DE DONNEES (MOTS)
139 C     MOT  8 ==>    "     MAXI.  "     "         "     "    "      "
140 C     MOT  9 ==>    "     TOTALE "     "         "     "    "      "
141 C     MOT 10 ==> NOMBRE DE REECRITURES SUR PLACE (VRAIES)
142 C     MOT 11 ==>   "     "      "      PLUS COURTES
143 C     MOT 12 ==>   "     "      "       "   LONGUES
144 C     MOT 13 ==> NOMBRE MAXIMUM D'ARTICLES PAR PAGE OU ARTICLE D'INDEX
145 C     MOT 14 ==> DATE DE LA CREATION DU FICHIER (1ERE OUVERTURE)
146 C     MOT 15 ==> HEURE "  "    "     "     "    (  "      "    )
147 C     MOT 16 ==> DATE DE LA DERNIERE MODIFICATION GARANTIE (FERMETURE)
148 C     MOT 17 ==> HEURE "  "    "          "           "    (    "    )
149 C     MOT 18 ==> DATE DE LA 1ERE MODIFICATION PAS FORCEMENT GARANTIE
150 C     MOT 19 ==> HEURE "  "    "      "        "      "        "
151 C       (LES MODIFICATIONS NE SONT GARANTIES QUE SI LE MOT 4 VAUT ZERO)
152 C     MOT 20 ==> NOMBRE DE PAIRES D'ARTICLES D'INDEX PRERESERVES .
153 C     MOT 21 ==> NOMBRE DE "TROUS" CORRESP. A DES REECRITURES + LONGUES
154 C                ( AVANT OUVERTURE )
155 C     MOT 22 ==> NUMERO D'ARTICLE MAXI. DES ARTICLES PHYSIQ. DE DONNEES
156 C
157 C------ "PARAMETER" DECRIVANT LES POSITIONS DES ENTITES CI-DESSUS ------
158 C
159       INTEGER JPLPAR, JPLMNA, JPFEAM, JPLLDO, JPNAPH, JPNALO, JPLNAL
160       INTEGER JPLXAL, JPLTAL, JPNRES, JPNREC, JPNREL, JPXAPI, JPDCRE
161       INTEGER JPHCRE, JPDDMG, JPHDMG, JPDMNG, JPHMNG, JPNPIR, JPNTRU
162       INTEGER JPAXPD
163 C
164       PARAMETER ( JPLPAR=1, JPLMNA=2, JPFEAM=3, JPLLDO=4, JPNAPH=5 )
165       PARAMETER ( JPNALO=6, JPLNAL=7, JPLXAL=8, JPLTAL=9, JPNRES=10 )
166       PARAMETER ( JPNREC=11, JPNREL=12, JPXAPI=13, JPDCRE=14 )
167       PARAMETER ( JPHCRE=15, JPDDMG=16, JPHDMG=17, JPDMNG=18 )
168       PARAMETER ( JPHMNG=19, JPNPIR=20, JPNTRU=21, JPAXPD=22 )
169 C