1 | C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * |
---|
2 | C |
---|
3 | C LAST MODIF : 07.05.1991 PASSAGE DE 40 A 75 MOLECULES DANS LES COMMON |
---|
4 | C |
---|
5 | C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * |
---|
6 | C |
---|
7 | subroutine utili(p,pgm) |
---|
8 | C |
---|
9 | character*7 form,bin |
---|
10 | character*4 code,blanc,kk,ivab(32) |
---|
11 | character*3 modif,pgm,mpgx,oui |
---|
12 | character*2 ikod,icod |
---|
13 | character*1 slash,moins,bl,aster,vb(128),p(1),zk(4) |
---|
14 | logical*1 qqq |
---|
15 | integer vers,njm(12) |
---|
16 | dimension vab(32) |
---|
17 | real*8 nom,nomj |
---|
18 | C |
---|
19 | common/p4/ nmol,knmol,ksot,kksot,ntab,nhist,kp,lre,form,bin,modif |
---|
20 | common/p5/ code(75),nn(150),nq(150),ikod(18),icod(18),jdeb(75) |
---|
21 | common/p8/ npgx,nfff,mpgx,qqq(75) |
---|
22 | common/entsor/iuni,juni,kuni,ient,isor,iper,nresv,maxx,blanc,oui |
---|
23 | C |
---|
24 | equivalence (vb(1),vab(1),ivab(1),nomj),(kk,zk(1)) |
---|
25 | C |
---|
26 | data njm /31,28,31,30,31,30,31,31,30,31,30,31/ |
---|
27 | data slash,moins,bl,aster/'/','-',' ','*'/ |
---|
28 | C |
---|
29 | nfff=1 |
---|
30 | call pgeisa(0.,99999.) |
---|
31 | read (iuni,rec=1) |
---|
32 | &aa1,aa2,anu,n203,nbraie,nbmol,iecr,ifin,ll1,ll2,ll3,ll4 |
---|
33 | c vers=ll3 |
---|
34 | if(ll1.eq.0.or.ll2.eq.0) go to 300 |
---|
35 | write(isor,1000) pgm,pgm,vers |
---|
36 | 1000 format(1x,17('*'),98x,17('*')/1x,'* geisa geisa *', |
---|
37 | &31x,' spectroscopic data bank ',32x, |
---|
38 | &'* geisa geisa *'/' *',6x,a3,6x,'*',98x,'*',6x,a3,6x,'*'/ |
---|
39 | &' * geisa geisa *',26x,15x,'*** GEISA',i2.2,' ***',16x, |
---|
40 | & 26x,'* geisa geisa *'/1x,17('*'),98x,17('*')/ |
---|
41 | & 1x,33x,' management and study of atmospheric spectroscopic |
---|
42 | &informations') |
---|
43 | write(isor,2000) |
---|
44 | 2000 format(//1x,51x,' list of the user records '/// |
---|
45 | &' |',128('-'),'|'/ |
---|
46 | &2x, '| date | nu1 | nu2 |pgm|',30x, |
---|
47 | &' used molecule ',44x,'|') |
---|
48 | lll1=ifin+ll1+ll2 |
---|
49 | lll2=lll1+ll4 |
---|
50 | if(ll4.lt.0) lll2=ifin+ll1+ll2-ll4-1 |
---|
51 | C |
---|
52 | C CODAGE DU TABLEAU VB |
---|
53 | C 1 ---> 8 NOM |
---|
54 | C 9 ---> 15 SIGLE NUM |
---|
55 | C 16 ---> 23 DATE |
---|
56 | C 25 ---> 28 NU1 |
---|
57 | C 29 ---> 32 NU2 |
---|
58 | C 33 ---> 36 PGM |
---|
59 | C 37 ---> 120 MOLECULES |
---|
60 | C |
---|
61 | do 20 lll=lll1,lll2 |
---|
62 | read (iuni,rec=lll) kb,longr,max,nxx,(p(j),j=1,kb) |
---|
63 | if(lll.eq.lll1.and.kb.eq.0) go to 200 |
---|
64 | if(kb.eq.0) go to 20 |
---|
65 | i1=0 |
---|
66 | do 18 i=1,kb,nxx |
---|
67 | i1=i1+1 |
---|
68 | C |
---|
69 | C COPIE DU NOM ET DU SIGLE NUM |
---|
70 | C |
---|
71 | do 5 j=1,15 |
---|
72 | vb(j)= p(i+j-1) |
---|
73 | 5 continue |
---|
74 | C |
---|
75 | C DECODAGE DE LA DATE EN XX/XX/XX |
---|
76 | C |
---|
77 | read (p(i+15),'(i2)') lan |
---|
78 | read (p(i+17),'(i2)') jour |
---|
79 | njm2=njm(2) |
---|
80 | if(mod(lan,4).eq.0) njm(2)=29 |
---|
81 | do 6 j=1,12 |
---|
82 | mois=j |
---|
83 | if(jour.le.njm(j)) go to 7 |
---|
84 | jour=jour-njm(j) |
---|
85 | 6 continue |
---|
86 | 7 continue |
---|
87 | njm(2)=njm2 |
---|
88 | write (jour,'(i2)') vb(16) |
---|
89 | vb(18)=slash |
---|
90 | write (mois,'(i2)') vb(19) |
---|
91 | vb(21)=slash |
---|
92 | write (lan ,'(i2)') vb(22) |
---|
93 | C |
---|
94 | C COPIE DE NU1 ET NU2 ET NOM PROGRAMME |
---|
95 | C |
---|
96 | do 8 j=21,32 |
---|
97 | vb(j+4)=p(i+j-1) |
---|
98 | 8 continue |
---|
99 | C MISE A BLANC DE LA REGION MOLECULE |
---|
100 | C |
---|
101 | do 10 j=10,32 |
---|
102 | ivab(j)=blanc |
---|
103 | 10 continue |
---|
104 | C |
---|
105 | C SI PROGRAMME LEC LAISSER DES BLANCS |
---|
106 | C |
---|
107 | C DECODAGE DES MOLECULES |
---|
108 | C |
---|
109 | i2=36 |
---|
110 | do 14 j=33,nxx |
---|
111 | if(p(i+j-1).eq.'1') go to 14 |
---|
112 | kk=code(j-32) |
---|
113 | do 12 jj=1,4 |
---|
114 | if(zk(jj).eq.bl) go to 13 |
---|
115 | i2=i2+1 |
---|
116 | C NE PAS DEBORDER DANS LE TABLEAU VB |
---|
117 | if(i2.le.128) vb(i2)=zk(jj) |
---|
118 | 12 continue |
---|
119 | 13 continue |
---|
120 | i2=i2+1 |
---|
121 | if(i2.le.128) vb(i2)=moins |
---|
122 | 14 continue |
---|
123 | if(i2.le.128) vb(i2)=bl |
---|
124 | write(juni) vab |
---|
125 | 18 continue |
---|
126 | 20 continue |
---|
127 | end file juni |
---|
128 | rewind juni |
---|
129 | C |
---|
130 | C TRI SELON LES VARIABLES SUIVANTES : |
---|
131 | C NOM - SIGLENUM - ANNEE - MOIS - JOUR . |
---|
132 | C |
---|
133 | c call tri('*sort fields=(5,8,ch,a,13,7,ch,a,26,2,ch,a,23,2,ch,a,20, |
---|
134 | c &2,ch,a)*','*record type=v*',irc) |
---|
135 | C |
---|
136 | if(irc.ne.0) go to 100 |
---|
137 | luni=juni+1 |
---|
138 | rewind luni |
---|
139 | nom=0. |
---|
140 | i=0 |
---|
141 | 35 continue |
---|
142 | read (luni,end=40) vab |
---|
143 | i=i+1 |
---|
144 | if(nom.eq.nomj) go to 37 |
---|
145 | ii=0 |
---|
146 | do 36 j=1,8 |
---|
147 | if(vb(j).ne.bl) ii=ii+1 |
---|
148 | 36 continue |
---|
149 | nom=nomj |
---|
150 | iii=8-ii |
---|
151 | write(isor,2010) nom,(vb(j),j=9,15),(aster,j=1,ii),(bl,j=1,iii) |
---|
152 | 2010 format( ' |',128('-'),'|'/ ' |',128x,'|'/ |
---|
153 | &' |---',a8,5x,7a1,105x,'|'/' | ',8a1,117x,'|'/' |',128('-'), |
---|
154 | &'|') |
---|
155 | 37 continue |
---|
156 | write(isor,2020)(vb(j),j=16,23),vab(7),vab(8),ivab(9), |
---|
157 | &(vb(j),j=37,128) |
---|
158 | 2020 format(' |',8a1,'|',f10.3,'|',f10.3,'|',a3,'|',92a1,' |') |
---|
159 | go to 35 |
---|
160 | 40 continue |
---|
161 | write(isor,2030) |
---|
162 | 2030 format( ' |',128('-'),'|') |
---|
163 | return |
---|
164 | 100 continue |
---|
165 | write(isor,3000) |
---|
166 | 3000 format(///' *uti* error in step sort'///) |
---|
167 | return |
---|
168 | 200 continue |
---|
169 | write(isor,4000) |
---|
170 | 4000 format(///' *uti* record empty, no call to the data bank '//) |
---|
171 | return |
---|
172 | 300 continue |
---|
173 | write(isor,5000) pgm |
---|
174 | 5000 format(///' *',a3,'* trs and anl options must be run with parame |
---|
175 | &ter modif=oui before this call'///) |
---|
176 | return |
---|
177 | end |
---|