File: combo.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,103 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 COMBO (CDATA,NX,EXTRA,NNAM,NAME,NN,VAR,IER)
C
C     THIS ROUTINE  PROCESSES THE  COMBINE INPUT.
C        THE  INPUT/ OUTPUTS  ARE
C
C                  CDATA  -  XRCARD  IMAGE OF  COMBINE CARD  (IN)
C                  NX     -  NUMBER OF EXTRAS                (IN)
C                  EXTRA  -  3 BY NX ARRAY OF EXTRAS         (IN)
C                  NNAM   -  NUMBER OF CURRENT SUBS NAMES (IN/OUT)
C                  NAMES  -  ARRAY OF  CURRENT SUBS NAMES (IN/OUT)
C                  NN     -  NUMBER OF SUBS TO BE COMBINED  (OUT)
C                  VAR    -  3 BY NVAR ARRAY OF VARIABLES   (OUT)
C                            ARRANGED AS- KEY WORD + 2 DATA WORDS
C
C
C
C
      EXTERNAL RSHIFT   ,COMPLF
C
      INTEGER  CDATA(5) ,EXTRA(3,1)    ,NAME(2,1) ,VAR( 3,2)
      INTEGER  RSHIFT   ,COMPLF        ,EQSN
C
      DIMENSION   INUM(7)   ,NUMBS(7) ,MOPT(3)   ,MSORT(3)  ,NAI(7)
C
      DATA   INUM   / 4HN1  , 4HN2  ,4HN3  ,4HN4  ,4HN5  ,4HN6  ,4HN7  /
      DATA   LPRN,    NOPT,   NSORT, MOPT                ,MSORT        /
     1       4H(    , 4HOPTS, 4HSORT,4HAUTO,4HMAN ,4HREST,4HX   ,4HY   ,
     2       4HZ    /
      DATA   MANU   / 4HMANU/
      DATA   NNO    / 4HNAME/ ,NNC /4HNAMC/, NAMS /4HNAMS/
      DATA   NAI    / 4HNA1 ,4HNA2 ,4HNA3  ,4HNA4 ,4HNA5 ,4HNA6 ,4HNA7 /
      DATA   NCNO   / 4HNCNO/
      DATA   EQSN   / 4H=   /
C
C
      LWORD  =  RSHIFT( COMPLF(0),1)
      IER    = 0
C     COMBINE OPERATION
C         PROCESS PRIMARY CARD -COMBINE( OPTS,SORT) = NAME1,NAME2, ETC
C     SET DEFAULTS
      DO 1210 I =1,150
 1210 VAR(I,1) = 0
      JNAM = 6
      VAR(1,1) = NOPT
      VAR(2,1) = MOPT(1)
      VAR(1,2) = NSORT
      VAR(2,2) = MSORT(1)
      IF( CDATA(5) .NE. LPRN) GO TO 1220
      K = 6
C
C     PROCESS  AUTO/MAN  OR XYZ
C
 1211 DO 1215 I =1,3
      IF (  CDATA(K) .NE. MOPT(I)) GO TO 1212
      VAR(2,1) = MOPT(I)
      GO TO 1216
 1212 IF ( CDATA(K) .NE. MANU) GO TO  1213
      VAR(2,1) = MOPT(2)
      GO TO 1216
 1213 IF (  CDATA(K) .NE. MSORT(I)) GO TO 1215
      VAR(2,2) = MSORT(I)
      GO TO 1216
 1215 CONTINUE
C     NOT VALID    ASSUME EQ SIGN OR NAME
C
      GO TO 1222
 1216 K  = K+2
      GO TO 1211
C
C     NO  OPTION
 1220 K = 4
C
C     CHECK FOR  EQ SIGN
 1222 IF ( CDATA( K+1) .EQ. EQSN)  K =K+2
C
C     PROCESS NAMES
      NN = 0
      DO 1235 I = 1,7
      KN = K + 2*I -2
      IF ( CDATA( KN) .EQ. LWORD) GO TO 1236
C
      VAR(1,I+2) = NAMS
      VAR(2,I+2) = CDATA(KN)
      VAR(3,I+2) = CDATA(KN+1)
C
C     FIND STRUCTURE NUMBER
      IF ( NNAM .EQ. 0 ) GO TO 1231
      DO 1230 J =1, NNAM
      IF ( CDATA(KN) .NE. NAME(1,J) .OR. CDATA(KN+1).NE.NAME(2,J))
     1     GO TO 1230
      NUMBS(I) = J
      GO TO 1232
 1230 CONTINUE
C
C     NEW NAME
C
 1231 NNAM  = NNAM +1
      NUMBS(I) = NNAM
      NAME(1,NNAM) = CDATA(KN)
      NAME(2,NNAM) = CDATA(KN+1)
 1232 NN= NN+1
 1235 CONTINUE
C
C
C     MOVE  EXTRAS INTO PLACE  CHANGE NAME TO NAMC
 1236 IC = 0
      DO 1240  J = 1,NX
      IX  = J +3*NN  +2
      IF ( EXTRA(1,J) .NE. NNO ) GO TO 1238
      EXTRA(1,J) = NNC
      IC = IX
 1238 DO 1240 K = 1,3
      VAR( K,IX) = EXTRA(K,J)
 1240 CONTINUE
C
C     SET  STRUCTURE NUMBER KEYS
C
      IF( NN .EQ. 0) GO TO 1248
C
      DO 1245  I = 1, NN
C
      IX =  I + NN  +2
      VAR(1,IX) = INUM(I)
      VAR(2,IX) = -1
      VAR(3,IX) = NUMBS(I)
      IY = IX+NN
      VAR(1,IY) = NAI(I)
      VAR(2,IY) = VAR(2,I+2)
      VAR(3,IY) = VAR(3,I+2)
 1245 CONTINUE
      GO TO 1250
 1248 IER = 1
C
C     CHECK  FOR NAMC AS A PREVIOUS NAME  OR MISSING
 1250 IF ( IC .EQ. 0) GO TO 1265
      DO 1260 J =1,NNAM
      IF (VAR(2,IC).NE. NAME(1,J).OR.VAR(3,IC).NE. NAME(2,J)) GO TO 1260
      GO TO 1265
 1260 CONTINUE
C
C     OK -NEW NAME , ADD TO LIST
C
      NNAM = NNAM+1
      NAME(1,NNAM) = VAR(2,IC)
      NAME(2,NNAM) = VAR(3,IC)
      IX = NX+3*NN+3
      VAR(1,IX) = NCNO
      VAR(2,IX) = -1
      VAR(3,IX) = NNAM
      RETURN
 1265 IER = IER +2
      RETURN
      END