File: softoc.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-- 5,334 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 SOFTOC
C
C     SOF TABLE OF CONTENTS ROUTINE
C
C
C     THE CURRENT SUBSTRUCTURE TYPE BIT POSITIONS ARE -
C
C        NO BIT - BASIC SUBSTRUCTURE (EXCEPT IMAGE BIT)
C        BIT 30 - IMAGE SUBSTRUCTURE
C            29 - COMBINED SUBSTRUCTURE
C            28 - GUYAN REDUCTUION SUBSTRUCTURE
C            27 - MODAL REDUCTION SUBSTRUCTURE
C            26 - COMPLEX MODAL REDUCTION SUBSTRUCTURE
C
C     TO ADD A NEW SUBSTRUCTURE TYPE BIT THE FOLLOWING UPDATES ARE
C     REQUIRED.
C
C        1) INCREASE THE DEMENSION OF TYPE.
C        2) INCREASE THE VALUE OF NTYPE IN THE DATA STATEMENT.
C        3) ADD A NEW BCD TYPE VALUE TO THE DATA STATEMENT.
C
C
C     THIS ROUTINE IS CURRENTLY CODED TO HANDLE UP TO 27 SOF ITEMS
C     AUTOMATICALLY.
C     TO INCREASE THIS TO 40 ITEMS PERFORM THE FOLLOWING UPDATES.
C
C        1) CHANGE THE DIMENSION OF HDR TO (40,4)
C        2) CHANGE THE DIMENSION OF ITM TO (40)
C        3) CHANGE THE VALUE OF MAXITM IN THE DATA STATEMENT TO 40
C        4) CHANGE THE INNER GROUPS ON FORMAT 80 TO 39(A1,1X),A1
C        5) CHANGE THE INNER GROUP ON FORMAT 100 TO 39(A1,1X),A1
C
      EXTERNAL        LSHIFT,RSHIFT,ANDF
      INTEGER         AVBLKS,BLANK,DITNSB,BUF,SSNAME(2),ANDF,SS,PS,CS,
     1                HL,RSHIFT,DIRSIZ,SOFSIZ,DITSIZ,NUM(10),BLKSIZ,
     2                HIBLK,FILSIZ,TYPE(5),ITM(27),HDR(27,4)
      CHARACTER       UFM*23,UWM*25,UIM*29,SFM*25,SWM*27
      COMMON /XMSSG / UFM,UWM,UIM,SFM,SWM
      COMMON /MACHIN/ MACH,IHALF
      COMMON /ZZZZZZ/ BUF(1)
      COMMON /SOF   / DIT,DITPBN,DITLBN,DITSIZ,DITNSB,DITBL
      COMMON /SYS   / BLKSIZ,DIRSIZ,SUPSIZ,AVBLKS,HIBLK,IFRST
      COMMON /SOFCOM/ NFILES,FILNAM(10),FILSIZ(10)
      COMMON /SYSTEM/ SYSBUF,NOUT,Z1(6),NLPP,Y(2),LINE,Z2(26),NBPC,NBPW
      COMMON /ITEMDT/ NITEM,ITEM(7,1)
      DATA    TYPE  / 2HB , 2HC , 2HR , 2HM , 2HCM /
      DATA    NUM   / 1H1, 1H2, 1H3, 1H4, 1H5, 1H6 ,1H7, 1H8, 1H9, 1H0 /
      DATA    BLANK / 4H     /
      DATA    IMAGE / 4HI    /
      DATA    NTYPE / 6      /
      DATA    MAXITM/ 27     /
C
      NITM = NITEM
      IF (NITM .LE. MAXITM) GO TO 10
      NITM = MAXITM
      WRITE  (NOUT,6237) SWM,MAXITM
 6237 FORMAT (A27,' 6237, THE SOFTOC ROUTINE CAN HANDLE ONLY',I4,
     1       ' ITEMS.', /34X,'ADDITIONAL ITEMS WILL NOT BE SHOWN')
C
C     SET UP HEADINGS AND MASKS
C
   10 NSHFT = 0
      DO 30 I = 1,4
      DO 20 J = 1,NITM
   20 HDR(J,I) = KLSHFT(ITEM(1,J),NSHFT/NBPC)
      K = NITM + 1
      IF (K .GT. MAXITM) GO TO 30
      DO 22 J = K,MAXITM
   22 HDR(J,I) = BLANK
   30 NSHFT = NSHFT + NBPC
C
      LINE  = NLPP + 1
      M0009 = 1023
      M1019 = LSHIFT(1023,10)
      M2029 = LSHIFT(1023,20)
      IMASK = LSHIFT(1,30)
C
C     LOOP THROUGH DIT
C
      DO 110 JMKN = 1,DITSIZ,2
      I = (JMKN-1)/2 + 1
      CALL FDIT (I,K)
      SSNAME(1) = BUF(K  )
      SSNAME(2) = BUF(K+1)
      IF (SSNAME(1).EQ.BLANK .AND. SSNAME(2).EQ.BLANK) GO TO 110
      CALL FMDI (I,K)
C
C     TEST TYPE BITS IN MDI
C
      DO 40 IT = 2,NTYPE
      IBIT = ANDF(BUF(K+1),LSHIFT(1,31-IT))
      IF (IBIT .NE. 0) GO TO 50
   40 CONTINUE
      IT = 1
   50 IS = ANDF(BUF(K+1),IMASK)
      IM = BLANK
      IF (IS .NE. 0) IM = IMAGE
      SS = RSHIFT(ANDF(BUF(K+1),M1019),10)
      PS = ANDF(BUF(K+1),M0009)
      LL = RSHIFT(ANDF(BUF(K+2),M2029),20)
      CS = RSHIFT(ANDF(BUF(K+2),M1019),10)
      HL = ANDF(BUF(K+2),M0009)
C
C     LOOP THROUGH MDI ENTRY FOR THIS SUBSTRUCTURE DETERMINING THE
C     SIZE OF EACH EXISTING ITEM.
C
      DO 70 J = 1,NITM
      JJ = J + IFRST - 1
      IF (BUF(K+JJ) .EQ. 0) GO TO 60
      INUM = RSHIFT(BUF(K+JJ),IHALF)*BLKSIZ
      INUM = ALOG10(FLOAT(INUM)) + .3
      ITM(J) = NUM(INUM)
      IF (IS.NE.0 .AND. ITEM(4,J).EQ.0) ITM(J) = NUM(10)
      IF (PS.NE.0 .AND. IS.EQ.0 .AND. ITEM(5,J).EQ.0) ITM(J) = NUM(10)
      GO TO 70
   60 ITM(J) = BLANK
   70 CONTINUE
C
      LINE = LINE + 1
      IF (LINE .LE. NLPP) GO TO 90
      CALL PAGE1
      LINE = LINE + 9 - 4
      WRITE  (NOUT,80) HDR
   80 FORMAT (//,26X,90HS U B S T R U C T U R E   O P E R A T I N G   F
     1I L E   T A B L E   O F   C O N T E N T S , //,
     1 1H ,51X,26(A1,2X),A1,/1H ,51X,26(A1,2X),A1,/1H ,51X,26(A1,2X),A1,
     2 /,1H ,4X,12HSUBSTRUCTURE,35X,26(A1,2X),A1, /1H ,4X,3HNO.,3X,4HNAM
     3E,4X,4HTYPE,3X,2HSS,3X,2HPS,3X,2HLL,3X,2HCS,3X,2HHL,4X,80(1H-)/)
C
   90 WRITE  (NOUT,100) I,SSNAME,IM,TYPE(IT),SS,PS,LL,CS,HL,
     1                  (ITM(L),L=1,NITM)
  100 FORMAT (2X,I6,2X,2A4,2X,A1,A2,5(1X,I4),4X,26(A1,2X),A1)
  110 CONTINUE
C
C     PRINT SOF SPACE UTILIZATION MESSAGE
C
      LINE = LINE + 8
      IF (LINE .GT. NLPP) CALL PAGE1
      K    = SOFSIZ(K)
      NBLK = 0
      DO 115 I = 1,NFILES
  115 NBLK = NBLK + FILSIZ(I)
      IPER = (AVBLKS*100)/NBLK
      WRITE  (NOUT,120) K,AVBLKS,IPER,HIBLK
  120 FORMAT (//,51X,80HSIZE OF ITEM IS GIVEN IN POWERS OF TEN   (0 INDI
     1CATES DATA IS STORED IN PRIMARY) ,/,
     2        26H0*** UNUSED SPACE ON SOF = ,I9,7H WORDS.  ,/,
     3        22X,                   4HOR = ,I9,8H BLOCKS. ,/,
     4        22X,                   4HOR = ,I9,9H PERCENT.,/,
     5        26H0*** HIGHEST BLOCK USED  = ,I9)
      LINE = NLPP
      RETURN
      END