source: PSPA/parmelaPSPA/trunk/card.f @ 315

Last change on this file since 315 was 12, checked in by lemeur, 12 years ago

parmela pspa initial

File size: 2.9 KB
Line 
1      subroutine card(nm,nl,nr,vv)
2c     free format card input subroutine.      swenson         4/24/69
3c     nm=nr max, nl=length of label, nr=number of numbers read, vv=value
4c     sn,in,fn,ffn are the sign, integer, fract, and factor of number.
5c     se,ie,fe,ffe are the sign, integer, fract, and factor of exponent.
6c---------------------------------------------------------------------------
7      save
8c
9      include 'param_sz.h'
10      include 'var_char.h'
11      include 'ucom.h'
12c
13      common/image/jj,ij
14      real vv(100)
15c--------------------------------------------------------------------------
16c*
17      data (ik(k),k=1,18)/' ',',','=','.','e','E','+','-','0','1','2',
18     1'3','4','5','6','7','8','9'/
19      ij(81)=char(32)
20      if(nm.ne.0) then
21         if((jj.eq.33).and.(vv(6).eq.2)) then
22         write(nnout,*) 
23     1'FOCLAL FACBZ=',vv(5),' IOPT= 2 all others values not used'
24         else
25         write(nnout,330)ik(1),(kj(j),j=1,78)
26         endif
27      endif
28      read(nin,330) (kj(j),j=1,80)
29      do 1 j=1,80
30      ij(j)=kj(j)
31 1    continue
32      mode=1
33      nl=-1
34      nr=0
35      km=18
36      do 320 j=1,81
37      do 10 k=1,km
38      if (ik(k).eq.ij(j)) then
39      go to 30
40      endif
41   10 continue
42   20 mode=1
43      km=4
44      go to 320
45   30 continue
46      l=k
47      if (l.gt.9) l=9
48      go to (40,50,60,70,80,90,100,110), mode
49   40 sn=1.
50      in=0
51      fn=0.
52      ffn=1.
53      se=1.
54      ie=0
55      fe=0.
56      ffe=1.
57c
58c           (     ,   =   .   e   E   +   -  0-9)
59      go to (120,120,120,170,190,190,140,130,150), l
60   50 go to (20,20,20,170,190,190,20,20,150), l
61   60 go to (270,270,20,170,200,200,220,210,160), l
62   70 go to (280,280,20,20,200,200,220,210,180), l
63   80 go to (20,20,20,250,20,20,220,210,230), l
64   90 go to (20,20,20,250,20,20,20,20,230), l
65  100 go to (290,290,20,250,20,20,20,20,240), l
66  110 go to (300,300,20,20,20,20,20,20,260), l
67  120 km=18 ! number of possible characters
68      if (nr.eq.0.and.nl.lt.0) nl=j-1
69      go to 320
70c          number part
71  130 sn=-1.
72  140 mode=2
73      go to 320
74  150 mode=3
75  160 continue
76      in=10*in+k-9
77      go to 320
78  170 mode=4
79      go to 320
80  180 ffn=.1*ffn
81      fn=fn+ffn*float(k-9)
82      go to 320
83c         exponent part
84  190 in=1
85  200 mode=5
86      go to 320
87  210 se=-1.
88  220 mode=6
89      go to 320
90  230 mode=7
91  240 continue
92      ie=10*ie+k-9
93      go to 320
94  250 mode=8
95      go to 320
96  260 ffe=.1*ffe
97      fe=fe+ffe*float(k-9)
98      go to 320
99c          calculate and store value
100  270 value=sn*float(in)
101      go to 310
102  280 value=sn*(float(in)+fn)
103      go to 310
104  290 value=sn*(float(in)+fn)*10.**(int(se)*ie)
105      go to 310
106  300 value=sn*(float(in)+fn)*10.**(se*(float(ie)+fe))
107  310 nr=nr+1
108      vv(nr)=value
109      if (nr.ge.40) return
110      mode=1
111  320 continue
112      return
113c
114  330 format (80a1)
115      end
116c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
Note: See TracBrowser for help on using the repository browser.