File: sofcls.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 (80 lines) | stat: -rw-r--r-- 2,381 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
      SUBROUTINE SOFCLS
C
C     WRITES OUT AT THE TERMINATION OF A MODULE ALL THE IN CORE BUFFERS
C     AND COMMON BLOCKS.
C
      LOGICAL         DITUP,MDIUP,NXTUP,OPNSOF,NXTRST
      INTEGER         BUF,A,B,FILNAM,FILSIZ,PSSWRD,DIT,DITPBN,DITLBN,
     1                MDI,MDIPBN,MDILBN
      COMMON /ZZZZZZ/ BUF(1)
      COMMON /SOF   / A(37)
      COMMON /SYS   / B(6)
      COMMON /ITEMDT/ NITEM,ITEM(7,1)
      COMMON /SYSTEM/ NBUFF
      COMMON /SOFCOM/ NFILES,FILNAM(10),FILSIZ(10),STATUS,PSSWRD(2),
     1                FIRST,OPNSOF
      EQUIVALENCE     (DIT   ,A(1) ),(DITPBN,A(2) ),(DITLBN,A(3) ),
     1                (MDI   ,A(15)),(MDIPBN,A(16)),(MDILBN,A(17)),
     2                (NXT   ,A(19)),(NXTPBN,A(20)),(NXTLBN,A(21)),
     3                (DITUP ,A(34)),(MDIUP ,A(35)),(NXTUP ,A(36)),
     4                (NXTRST,A(37))
      DATA    IWRT  / 2 /
C
      IF (.NOT.OPNSOF) RETURN
      IF (DITPBN .EQ. 0) GO TO 20
      IF (.NOT.DITUP) GO TO 20
      CALL SOFIO (IWRT,DITPBN,BUF(DIT-2))
      DITUP = .FALSE.
      GO TO 40
   20 IF (NXTPBN .EQ. 0) GO TO 40
      IF (.NOT.NXTUP) GO TO 40
      CALL SOFIO (IWRT,NXTPBN,BUF(NXT-2))
      NXTUP = .FALSE.
   40 IF (MDIPBN .EQ. 0) GO TO 60
      IF (.NOT.MDIUP) GO TO 60
      CALL SOFIO (IWRT,MDIPBN,BUF(MDI-2))
      MDIUP = .FALSE.
C
C     WRITE OUT COMMON BLOCKS.
C
   60 LAST = NBUFF - 4
      DO 62 I = 1,LAST
   62 BUF(DIT+I) = 0
      BUF(DIT+1) = PSSWRD(1)
      BUF(DIT+2) = PSSWRD(2)
      BUF(DIT+4) = NFILES
      DO 70 I = 1,NFILES
      BUF(DIT+ 4+I) = FILNAM(I)
      BUF(DIT+14+I) = FILSIZ(I)
      BUF(DIT+33+I) = A(22+I)
   70 CONTINUE
      DO 80 I = 1,4
      BUF(DIT+24+I) = B(I)
   80 CONTINUE
      BUF(DIT+29) = A(4)
      BUF(DIT+30) = A(5)
      BUF(DIT+31) = A(6)
      BUF(DIT+32) = A(18)
      BUF(DIT+33) = A(22)
      BUF(DIT+44) = A(33)
      NXTRST      = .FALSE.
      BUF(DIT+45) = A(37)
      BUF(DIT+46) = B(5)
      BUF(DIT+47) = B(6)
C
      BUF(DIT+100) = NITEM
      K = 100
      DO 92 I = 1,NITEM
      DO 90 J = 1,7
   90 BUF(DIT+K+J) = ITEM(J,I)
   92 K = K + 7
      IBL = 1
      DO 100 I = 1,NFILES
      BUF(DIT+3) = I
      CALL SOFIO (IWRT,IBL,BUF(DIT-2))
      IBL = IBL + FILSIZ(I)
  100 CONTINUE
      CALL SOFIO (7, 0, 0)
      OPNSOF = .FALSE.
      RETURN
      END