37
38
39
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "units_c.inc"
50
51
52
53 INTEGER IKAD(0:*),KINIV,NINIV
54 CHARACTER KEY0(*)*5
55
56
57
58 INTEGER NVAR
59
60
61
62 INTEGER I,J,M,N,NBC,K,K3,IV1(40),IKEY,JJ,IFM,IOS,IGN
64 CHARACTER KEY2*5, KEY3*5
65 CHARACTER(LEN=NCHARLINE100)::
66
67 k=0
68 ios = 0
69 ikey=kiniv
70 m = 0
71 DO n=1,niniv
72 READ(iusc1,rec=ikad(ikey)+k,fmt='(7X,A,1X,A,1X,I5,25X,I10)',
73 . err=9990)key2,key3,k3,nbc
74 k=k+1
75 IF (key2=='TRA ') THEN
76 m=1
77 IF(key3(1:1)=='X') THEN
78 jj=1
79 ELSEIF(key3(1:1)=='Y') THEN
80 jj=2
81 ELSEIF(key3(1:1)=='Z') THEN
82 jj=3
83 ELSE
85 ENDIF
86 ELSEIF (key2=='ROT ') THEN
87 m=1
88 IF(key3(1:1)=='X') THEN
89 jj=4
90 ELSEIF(key3(1:1)=='Y') THEN
91 jj=5
92 ELSEIF(key3(1:1)=='Z') THEN
93 jj=6
94 ELSE
96 ENDIF
97 ELSEIF (key2=='AXIS ') THEN
98 m=2
99 IF(key3(1:1)=='X') THEN
100 jj=-1
101 ELSEIF(key3(1:1)=='Y') THEN
102 jj=-2
103 ELSEIF(key3(1:1)=='Z') THEN
104 jj=-3
105 ELSE
107 ENDIF
108 ELSE
110 ENDIF
111
112 IF (jj < 0) THEN
113
114 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
115 k=k+1
116 READ(iusc2,*,err=9990,END=9990) ifm
117
118 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
119 k=k+1
120 READ(iusc2,*,err=9990,END=9990) VTX, VTY, VTZ, v
121 ELSE
122 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
123 k=k+1
124 READ(iusc2,*,iostat=ios) v
125 ENDIF
126
127 IF(nbc<=m .OR. ios /= 0 .OR.(k3==2.AND.nbc/=(m+1))) THEN
128 CALL ancmsg(msgid=73,anmode=aninfo,c1=key0(ikey))
130 END IF
131
132 IF (k3==2) THEN
133 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)',err=9990)carte
134 k=k+1
135 READ(carte,fmt='(I10)') ign
136 WRITE(iin,'(3I10,1PG20.13)')-ign,ign,jj,v
137 IF(jj < 0) THEN
138 WRITE(iin,'(1P3G20.13,I10)')vtx,vty,vtz,ifm
139 ENDIF
140 ELSE
141 DO i=1,nbc-m
142 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)',err=9990)carte
143 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
144 k=k+1
145 READ(iusc2,*,err=9990,END=9990)(IV1(J),J=1,NVAR(CARTE))
146 DO j=1,
nvar(carte),k3+1
147 WRITE(iin,'(3I10,1PG20.13)')iv1(j),iv1(j+k3),jj,v
148 IF(jj < 0) THEN
149 WRITE(iin,'(1P3G20.13,I10)')vtx,vty,vtz,ifm
150 ENDIF
151 ENDDO
152 ENDDO
153 END IF
154 ENDDO
155
156 RETURN
157
158 9990 CONTINUE
159 CALL ancmsg(msgid=73,anmode=aninfo,
160 . c1=key0(ikey))
integer, parameter ncharline100
integer function nvar(text)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine wriusc2(irec, nbc, key0)