source: trunk/pgm97/utili.f @ 1

Last change on this file since 1 was 1, checked in by cbipsl, 18 years ago

Geisa inital import

File size: 4.9 KB
Line 
1C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
2C       
3C LAST MODIF : 07.05.1991 PASSAGE DE 40 A 75 MOLECULES DANS LES COMMON
4C       
5C - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
6C       
7      subroutine utili(p,pgm)
8C       
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
18C       
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
23C       
24      equivalence (vb(1),vab(1),ivab(1),nomj),(kk,zk(1))
25C       
26      data njm /31,28,31,30,31,30,31,31,30,31,30,31/
27      data slash,moins,bl,aster/'/','-',' ','*'/
28C       
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
33c     vers=ll3
34      if(ll1.eq.0.or.ll2.eq.0) go to 300
35      write(isor,1000)  pgm,pgm,vers
361000  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)
442000  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
51C       
52C     CODAGE DU TABLEAU VB
53C     1  ---> 8  NOM
54C     9  ---> 15 SIGLE NUM
55C     16 ---> 23 DATE
56C     25 ---> 28 NU1
57C     29 ---> 32 NU2
58C     33 ---> 36 PGM
59C     37 ---> 120 MOLECULES
60C       
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
68C       
69C     COPIE DU NOM ET DU SIGLE NUM
70C       
71      do 5 j=1,15
72      vb(j)= p(i+j-1)
735     continue
74C       
75C     DECODAGE DE LA DATE EN XX/XX/XX
76C       
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)
856     continue
867     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)
93C       
94C     COPIE DE NU1 ET NU2 ET NOM PROGRAMME
95C       
96      do 8 j=21,32
97      vb(j+4)=p(i+j-1)
988     continue
99C     MISE A BLANC DE LA REGION MOLECULE
100C       
101      do 10 j=10,32
102      ivab(j)=blanc
10310    continue
104C       
105C     SI PROGRAMME LEC LAISSER DES BLANCS
106C       
107C     DECODAGE DES MOLECULES
108C       
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
116C     NE PAS DEBORDER DANS LE TABLEAU VB
117      if(i2.le.128) vb(i2)=zk(jj)
11812    continue
11913    continue
120      i2=i2+1
121      if(i2.le.128) vb(i2)=moins
12214    continue
123      if(i2.le.128) vb(i2)=bl
124      write(juni) vab
12518    continue
12620    continue
127      end file juni
128      rewind juni
129C       
130C     TRI SELON LES VARIABLES SUIVANTES :
131C     NOM - SIGLENUM - ANNEE - MOIS - JOUR .
132C       
133c     call tri('*sort fields=(5,8,ch,a,13,7,ch,a,26,2,ch,a,23,2,ch,a,20,
134c    &2,ch,a)*','*record type=v*',irc)
135C       
136      if(irc.ne.0) go to 100
137      luni=juni+1
138      rewind luni
139      nom=0.
140      i=0
14135    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
14836    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)
1522010  format(  '  |',128('-'),'|'/  '  |',128x,'|'/
153     &'  |---',a8,5x,7a1,105x,'|'/'  |   ',8a1,117x,'|'/'  |',128('-'),
154     &'|')
15537    continue
156      write(isor,2020)(vb(j),j=16,23),vab(7),vab(8),ivab(9),
157     &(vb(j),j=37,128)
1582020  format('  |',8a1,'|',f10.3,'|',f10.3,'|',a3,'|',92a1,' |')
159      go to 35
16040    continue
161      write(isor,2030)
1622030  format(  '  |',128('-'),'|')
163      return
164100   continue
165      write(isor,3000)
1663000  format(///' *uti*   error in step sort'///)
167      return
168200   continue
169      write(isor,4000)
1704000  format(///' *uti*   record empty, no call to the data bank '//)
171      return
172300   continue
173      write(isor,5000) pgm
1745000  format(///' *',a3,'*   trs and anl options must be run with parame
175     &ter modif=oui before this call'///)
176      return
177      end
Note: See TracBrowser for help on using the repository browser.