File: sofut.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 (137 lines) | stat: -rw-r--r-- 3,633 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
      SUBROUTINE SOFUT
C
C     THE PURPOSE OF THE MODULE IS TO PERFORM THE TASKS OF ALTERING THE
C     SOF FILE IN ORDER TO EDIT, PURGE, AND EQUIVALENCE THE DATA ITEMS
C     OF SELECTED SUBSTRUCTURES.  THE CALLING SEQUENCE TO THE MODULE IS
C
C     SOFUT     //V,N,DRY/C,N,NAME1/C,N,OPER/C,N,OPT/C,N,NAME2/
C                 C,N,PREFX/C,N,IA/C,N,IB/C,N,IC/C,N,ID/C,N,IE $
C
      EXTERNAL        RENAME
      LOGICAL         DITUP
      INTEGER         DRY,OPER,OPT,PREFX,SYSBUF,DELE,RENAM,NAME(2)
      CHARACTER       UFM*23,UWM*25
      COMMON /XMSSG / UFM,UWM
      COMMON /BLANK / DRY,NAME1(2),OPER(2),OPT,NAME2(2),PREFX(2),
     1                ITEMS(10)
      COMMON /SOF   / SSS(33),DITUP
      COMMON /ZZZZZZ/ IZ(1)
      COMMON /SYSTEM/ SYSBUF,NOUT
      DATA    IEDIT , IDEST,IEQUIV / 4HEDIT    ,4HDEST ,4HEQUI   /
      DATA    IPRNT / 4HSOFP/
      DATA    DELE  / 4HDELE/
      DATA    RENAM / 4HRENA/
      DATA    NAME  / 4HSOFU,4HT   /
      DATA    ISCR1 / 301   /
C
      ITASK = 0
      IF (OPER(1) .EQ.  IEDIT) ITASK = 1
      IF (OPER(1) .EQ.  IDEST) ITASK = 2
      IF (OPER(1) .EQ. IEQUIV) ITASK = 3
      IF (OPER(1) .EQ.  IPRNT) ITASK = 4
      IF (OPER(1) .EQ.   DELE) ITASK = 5
      IF (OPER(1) .EQ.  RENAM) ITASK = 6
      IF (ITASK .EQ. 0) GO TO 1000
C
C     ALLOCATE BUFFERS FOR THE SOF UTILITY SUBROUTINES
C
      NZ  = KORSZ(IZ)
      IF (3*SYSBUF .GT. NZ) CALL MESAGE (-8,0,NAME(1))
      IB1 = NZ  - SYSBUF + 1
      IB2 = IB1 - SYSBUF - 1
      IB3 = IB2 - SYSBUF
      CALL SOFOPN (IZ(IB1),IZ(IB2),IZ(IB3))
      NZ  = IB3 - 1
      GO TO (20,30,40,130,180,200), ITASK
C
C     EDIT OPERATION
C
   20 CALL EDIT (NAME1(1),OPT,ITEST)
      GO TO 50
C
C     DESTROY OPERATION
C
   30 I = NZ/2 + 1
      CALL DSTROY (NAME1(1),ITEST,IZ,IZ(I),I-1)
      GO TO 50
C
C     EQUIVALENCE OPERATION
C
   40 I = NZ/2 + 1
      CALL SETEQ (NAME1,NAME2,PREFX,DRY,ITEST,IZ,I-1)
C
C     TEST RETURN CODE
C
   50 GO TO (110,110,110,60,110,70,110,80,90,100), ITEST
   60 WRITE (NOUT,1010) UWM,NAME1
      GO TO 100
   70 WRITE (NOUT,1020) UWM,NAME1
      GO TO 100
   80 WRITE (NOUT,1030) UWM,NAME2
      GO TO 100
   90 WRITE (NOUT,1040) UWM,NAME2
  100 DRY = -2
  110 CALL SOFCLS
      GO TO 1100
C
C     PRINT OPERATIONS
C
  130 IF (OPT) 140,140,150
C
C     PRINT SOF TABLE OF CONTENTS (DIT MDI)
C
  140 CALL SOFTOC
      IF (OPT .EQ. 0) GO TO 170
C
C     PRINT SOF DATA ITEMS
C
  150 DO 160 I = 1,5
      II = ITTYPE(ITEMS(2*I-1))
      IF (II) 160,152,154
C
C     TABLE ITEM
C
  152 CALL ITMPRT (NAME1,ITEMS(2*I-1),NZ,OPT)
      GO TO 160
C
C     MATRIX ITEM
C
  154 CALL MATWRT (ISCR1,NAME1,ITEMS(2*I-1),NZ)
C
  160 CONTINUE
  170 CALL SOFCLS
      GO TO 1100
C
C     DELETE OPERATION
C
  180 DO 190 I = 1,10
  190 CALL DELETE (NAME1,ITEMS(I),ITEST)
      GO TO 50
C
C     RENAME OPERATION
C
  200 CALL RENAME (NAME1,NAME2,IZ(1),NZ,ITEST)
      GO TO 50
C
C     ERROR MESSAGES
C
 1000 WRITE  (NOUT,1001) UWM,OPER(1),OPER(2)
 1001 FORMAT (A25,' 6217, MODULE SOFUT - ',2A4,' IS AN ILLEGAL ',
     1       'PARAMETER NAME.')
      GO TO 1100
C
 1010 FORMAT (A25,' 6212, MODULE SOFUT - THE SUBSTRUCTURE ',2A4,
     1       ' DOES NOT EXIST.')
C
 1020 FORMAT (A25,' 6218, MODULE SOFUT - THE SUBSTRUCTURE ',2A4,1X,
     1       'CANNOT BE DESTROYED BECAUSE IT IS AN IMAGE SUBSTRUCTURE.')
C
 1030 FORMAT (A25,' 6219, MODULE SOFUT - RUN EQUALS DRY OR STEP AND ',
     1       'SUBSTRUCTURE ',2A4, /33X,
     2       'OR ONE OF THE NEW NAMES ALREADY EXISTS.')
C
 1040 FORMAT (A25,' 6220, MODULE SOFUT - RUN = GO AND SUBSTRUCTURE ',
     1        2A4,' OR ONE OF THE NEW NAMES DOES NOT EXIST')
C
 1100 RETURN
      END