File: tablev.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (153 lines) | stat: -rw-r--r-- 4,364 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
      SUBROUTINE TABLE V (*,IN,LL,TRL,NAME,P4,IBUF,Z5)
C
C     TABLE-V IS CALLED ONLY BY INPUT5 TO GENERATE A GINO TABLE
C     DATA BLOCK IN 'OUT' FROM AN INPUT FILE 'IN' - A REVERSE PROCESS
C     OF TABLE-5.
C     THE INPUT FILE WAS FORTRAN WRITTEN, FORMATTED OR UNFORMATTED
C
C     IN     = INPUT FILE, INTEGERS
C     LL     = (200+LL) IS THE OUTPUT FILE, INTEGER
C     TRL    = AN ARRAY OF 7 WORDS FOR TRAILER
C     NAME   = ORIGINAL FILE NAME FROM INPUT FILE, 2 BCD WORDS, PLUS 1
C     P4     = 0, INPUT FILE WAS WRITTEN UNFORMATTED, BINARY, INTEGER
C            = 1, INPUT FILE WAS WRITTEN FORMATTED, ASCII, INTEGER
C     IBUF   = OPEN CORE AND GINO BUFFER POINTER, INTEGER
C
      LOGICAL          DEBUG
      INTEGER          SYSBUF,P4,Z,TRL(7),OUT,NAME(3),NAMEX(2),SUB(2),
     1                 END,TBLE,FUF,FU(2)
      REAL             RZ(1),Z4(2)
      DOUBLE PRECISION DZ
      CHARACTER*1      Z1,I1,R1,B1,D1,F1
      CHARACTER*5      Z5(1),Z5L,END5
      CHARACTER*10     Z10
      CHARACTER*15     Z15
      COMMON /SYSTEM/  SYSBUF,NOUT
      COMMON /ZZZZZZ/  Z(1)
      EQUIVALENCE      (Z1,Z5L), (Z(1),RZ(1)), (DZ,Z4(1))
      DATA    I1,R1,   B1,D1,F1  / 'I', 'R', '/', 'D', 'X'    /
      DATA    FU,      END,END5  / 2H  ,2HUN, 4H*END, ' *END' /
      DATA    SUB,     TBLE      / 4HTABL,4HEV  ,     4HTBLE  /
      DATA    DEBUG              / .FALSE.                    /
C
      IF (DEBUG) WRITE (NOUT,10)
 10   FORMAT (///,' *** IN TABLE-V, DEBUG ***')
      KORE  = IBUF-1
      KORE9 = (KORE/9)*9
      OUT   = 200+LL
      LL    = LL+1
      KOUNT = 0
C
C     OPEN GINO OUTPUT FILE AND WRITE A FILE HEADER
C
      CALL OPEN (*180,OUT,Z(IBUF),1)
      CALL FNAME (OUT,NAMEX)
      CALL WRITE (OUT,NAMEX,2,1)
      IF (DEBUG) WRITE (NOUT,20) NAMEX
 20   FORMAT (/5X,'GENERATING...',2A4,/)
      NAME(3) = TBLE
      IF (P4 .EQ. 1) GO TO 40
C
C     UNFORMATED READ
C
 30   READ (IN,ERR=150,END=130) LN,(Z(J),J=1,LN)
      IF (LN .GT. KORE) GO TO 170
      IF (LN.EQ.1 .AND. Z(1).EQ.END) GO TO 130
      CALL WRITE  (OUT,Z(1),LN,1)
      KOUNT = KOUNT+1
      GO TO 30
C
C     FORMATTED READ
C
 40   READ  (IN,50,ERR=150,END=130) LN,(Z5(J),J=1,LN)
 50   FORMAT (I10,24A5,/,(26A5))
      IF (LN .GT. KORE) GO TO 170
      IF (LN.EQ.1 .AND. Z5(1).EQ.END5) GO TO 130
      IF (LN .LE. -1) GO TO 130
      LB = (LN*5)/4+1
      K  = 0
      L  = 1
 60   IF (L .GT. LN) GO TO 120
      K  = K+1
      Z5L= Z5(L)
      IF (Z1 .EQ. I1) GO TO 90
      IF (Z1 .EQ. R1) GO TO 100
      IF (Z1 .EQ. B1) GO TO 70
      IF (Z1 .EQ. F1) GO TO 80
      IF (Z1 .EQ. D1) GO TO 110
      WRITE  (NOUT,65) Z5L
 65   FORMAT (/,' SYSTEM ERROR/TABLEV @65  Z5L=',A5)
      GO TO 150
C
C     BCD
C
 70   READ (Z5L,75) Z(LB+K)
 75   FORMAT (1X,A4)
C
C     FILLER
C
 80   L = L+1
      GO TO 60
C
C     INTEGER
C
 85   FORMAT (3A5)
 90   WRITE  (Z10,85) Z5(L),Z5(L+1)
      READ   (Z10,95) Z(LB+K)
 95   FORMAT (1X,I9)
      L = L+2
      GO TO 60
C
C     REAL, SINGLE PRECISION
C
 100  WRITE  (Z15, 85) Z5(L),Z5(L+1),Z5(L+2)
      READ   (Z15,105) RZ(LB+K)
 105  FORMAT (1X,E14.7)
      L = L+3
      GO TO 60
C
C     REAL, DOUBLE PRECISION
C
 110  WRITE (Z15, 85) Z5(L),Z5(L+1),Z5(L+2)
      READ  (Z15,115) DZ
 115  FORMAT (1X,D14.7)
      RZ(LB+K  ) = Z4(1)
      RZ(LB+K+1) = Z4(2)
      K = K+1
      L = L+3
      GO TO 60
C
 120  IF (K .LE. 0) GO TO 40
      CALL WRITE (OUT,Z(LB+1),K,1)
      KOUNT = KOUNT+1
      GO TO 40
C
C     ALL DONE.
C     CLOSE OUTPUT GINO FILE AND WRITE TRAILER
C
 130  CALL CLOSE (OUT,1)
      IF (DEBUG) WRITE (NOUT,135) TRL(2),KOUNT
 135  FORMAT (/,' DEBUG ECHO - OLD AND NEW COLUMN COUNTS =',2I5)
      TRL(1) = OUT
      TRL(2) = KOUNT
      CALL WRTTRL (TRL)
      FUF = FU(1)
      IF (P4 .EQ. 0) FUF = FU(2)
      WRITE  (NOUT,140) FUF,NAMEX
 140  FORMAT (/5X,'DATA TRANSFERED SUCCESSFULLY FROM ',A2,'FORMATTED ',
     1       'TAPE TO GINO OUTPUT FILE ',2A4)
      GO TO 200
C
C     ERROR
C
 150  CALL CLOSE (OUT,1)
      WRITE  (NOUT,160) NAMEX
 160  FORMAT (//5X,'ERROR IN READING INPUT TAPE IN TABLEV. NO ',2A4,
     1         /5X,'FILE GENERATED')
      GO TO 200
 170  CALL MESAGE (8,0,SUB)
      GO TO 200
 180  CALL MESAGE (1,OUT,SUB)
C
 200  RETURN 1
      END