Annotation of researchv10dc/cmd/matlab/sys.cdc, revision 1.1

1.1     ! root        1:       PROGRAM MATMAIN(INPUT,OUTPUT,TAPE5=INPUT,TAPE6=OUTPUT)
        !             2:       CALL MATLAB(0)
        !             3:       STOP
        !             4:       END
        !             5:       SUBROUTINE FILES(LUNIT,NAME,IOSTAT)
        !             6:       INTEGER LUNIT,NAME(64),IOSTAT
        !             7: C
        !             8: C     SYSTEM DEPENDENT ROUTINE TO ALLOCATE FILES
        !             9: C     LUNIT = LOGICAL UNIT NUMBER
        !            10: C           = 1,  SAVE
        !            11: C           = 2,  LOAD
        !            12: C           = 7,  PRINT
        !            13: C           = 8,  DIARY
        !            14: C           > 10, EXEC
        !            15: C           < 0,  CLOSE -LUNIT
        !            16: C           = -5, SPECIAL CASE, END OF FILE DETECTED ON TERMINAL
        !            17: C     NAME = FILE NAME, 1 CHARACTER PER WORD
        !            18: C     NONZERO IOSTAT RETURNED FOR ERROR CONDITION
        !            19: C
        !            20: C     (UNLESS CHANGED IN SUBROUTINE MATLAB, UNITS 5, 6 AND 9 ARE
        !            21: C      USED FOR TERMINAL INPUT, TERMINAL OUTPUT AND THE HELP FILE.
        !            22: C      THE HELP FILE IS OPENED BY SUBROUTINE HELPER.)
        !            23: C
        !            24:       CHARACTER*64 NAM
        !            25: C
        !            26:       IF (LUNIT .LT. 0) GO TO 30
        !            27: C
        !            28: C     FORTRAN 77 INTERNAL FILE CONVERSION FROM 64A1 TO CHARACTER*64
        !            29: C
        !            30:       WRITE(NAM,'(64A1)') NAME
        !            31: C
        !            32: C     UNFORMATTED I/O FOR SAVE AND LOAD
        !            33: C     FORMATTED I/O FOR EXEC, DIARY AND PRINT
        !            34: C
        !            35:       IOSTAT = 0
        !            36:       IF (LUNIT .EQ. 1)  OPEN(UNIT=LUNIT,FILE=NAM,FORM='UNFORMATTED',
        !            37:      >                   STATUS='NEW',ERR=20,IOSTAT=IOSTAT)
        !            38:       IF (LUNIT .EQ. 2)  OPEN(UNIT=LUNIT,FILE=NAM,FORM='UNFORMATTED',
        !            39:      >                   STATUS='OLD',ERR=20,IOSTAT=IOSTAT)
        !            40:       IF (LUNIT .EQ. 7)  OPEN(UNIT=LUNIT,FILE=NAM,
        !            41:      >                   STATUS='NEW',ERR=20,IOSTAT=IOSTAT)
        !            42:       IF (LUNIT .EQ. 8)  OPEN(UNIT=LUNIT,FILE=NAM,
        !            43:      >                   STATUS='NEW',ERR=20,IOSTAT=IOSTAT)
        !            44:       IF (LUNIT .GT. 10) OPEN(UNIT=LUNIT,FILE=NAM,
        !            45:      >                   STATUS='OLD',ERR=20,IOSTAT=IOSTAT)
        !            46:       IF (IOSTAT .NE. 0) GO TO 20
        !            47: C
        !            48: C     REWIND ALL EXCEPT DIARY
        !            49: C
        !            50:       IF (LUNIT .NE. 8) REWIND LUNIT
        !            51:       RETURN
        !            52: C
        !            53: C     ERROR ON OPEN
        !            54: C
        !            55:    20 IF (IOSTAT .EQ. 0) IOSTAT = -1
        !            56:       RETURN
        !            57: C
        !            58: C     CLOSE FILES
        !            59: C
        !            60:    30 CLOSE(UNIT=-LUNIT)
        !            61:       RETURN
        !            62:       END
        !            63:       SUBROUTINE SAVLOD(LUNIT,ID,M,N,IMG,JOB,XREAL,XIMAG)
        !            64:       INTEGER LUNIT,ID(4),M,N,IMG,JOB
        !            65:       REAL XREAL(1),XIMAG(1)
        !            66: C
        !            67: C     IMPLEMENT SAVE AND LOAD
        !            68: C     LUNIT = LOGICAL UNIT NUMBER
        !            69: C     ID = NAME, FORMAT 4A1
        !            70: C     M, N = DIMENSIONS
        !            71: C     IMG = NONZERO IF XIMAG IS NONZERO
        !            72: C     JOB = 0     FOR SAVE
        !            73: C         = SPACE AVAILABLE FOR LOAD
        !            74: C     XREAL, XIMAG = REAL AND OPTIONAL IMAGINARY PARTS
        !            75: C
        !            76: C     SYSTEM DEPENDENT FORMATS
        !            77:   101 FORMAT(4A1,3I4)
        !            78:   102 FORMAT(4O20)
        !            79: C
        !            80:       IF (JOB .GT. 0) GO TO 20
        !            81: C
        !            82: C     SAVE
        !            83:    10 WRITE(LUNIT,101) ID,M,N,IMG
        !            84:       DO 15 J = 1, N
        !            85:          K = (J-1)*M+1
        !            86:          L = J*M
        !            87:          WRITE(LUNIT,102) (XREAL(I),I=K,L)
        !            88:          IF (IMG .NE. 0) WRITE(LUNIT,102) (XIMAG(I),I=K,L)
        !            89:    15 CONTINUE
        !            90:       RETURN
        !            91: C
        !            92: C     LOAD
        !            93:    20 READ(LUNIT,101) ID,M,N,IMG
        !            94:       IF (EOF(LUNIT).NE.0) GO TO 30
        !            95:       IF (M*N .GT. JOB) GO TO 30
        !            96:       DO 25 J = 1, N
        !            97:          K = (J-1)*M+1
        !            98:          L = J*M
        !            99:          READ(LUNIT,102) (XREAL(I),I=K,L)
        !           100:          IF (EOF(LUNIT).NE.0) GO TO 30
        !           101:          IF (IMG .NE. 0) READ(LUNIT,102) (XIMAG(I),I=K,L)
        !           102:          IF (EOF(LUNIT).NE.0) GO TO 30
        !           103:    25 CONTINUE
        !           104:       RETURN
        !           105: C
        !           106: C     END OF FILE
        !           107:    30 M = 0
        !           108:       N = 0
        !           109:       RETURN
        !           110:       END
        !           111:       SUBROUTINE FORMZ(LUNIT,X,Y)
        !           112:       REAL X,Y
        !           113: C
        !           114: C     SYSTEM DEPENDENT ROUTINE TO PRINT WITH Z FORMAT
        !           115: C
        !           116:       IF (Y .NE. 0.0E0) WRITE(LUNIT,10) X,Y
        !           117:       IF (Y .EQ. 0.0E0) WRITE(LUNIT,10) X
        !           118:    10 FORMAT(2O22)
        !           119:       RETURN
        !           120:       END
        !           121:       REAL FUNCTION FLOP(X)
        !           122:       REAL X
        !           123: C     SYSTEM DEPENDENT FUNCTION
        !           124: C     COUNT AND POSSIBLY CHOP EACH FLOATING POINT OPERATION
        !           125: C     FLP(1) IS FLOP COUNTER
        !           126: C     FLP(2) IS NUMBER OF PLACES TO BE CHOPPED
        !           127: C
        !           128:       INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2)
        !           129:       COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN
        !           130: C
        !           131:       REAL MASK(15)
        !           132:       DATA MASK            / 77777777777777777770B,
        !           133:      $ 77777777777777777700B,77777777777777777000B,
        !           134:      $ 77777777777777770000B,77777777777777700000B,
        !           135:      $ 77777777777777000000B,77777777777770000000B,
        !           136:      $ 77777777777700000000B,77777777777000000000B,
        !           137:      $ 77777777770000000000B,77777777700000000000B,
        !           138:      $ 77777777000000000000B,77777770000000000000B,
        !           139:      $ 77777700000000000000B,77777000000000000000B/
        !           140: C
        !           141:       FLP(1) = FLP(1) + 1
        !           142:       K = FLP(2)
        !           143:       FLOP = X
        !           144:       IF (K .LE. 0) RETURN
        !           145:       FLOP = 0.0E0
        !           146:       IF (K .GE. 16) RETURN
        !           147: C     LOGICAL AND FUNCTION
        !           148: C     FLOP = X .AND. MASK(K)  IS AN ALTERNATE
        !           149:       FLOP = AND(X,MASK(K))
        !           150:       RETURN
        !           151:       END
        !           152:       SUBROUTINE XCHAR(BUF,K)
        !           153:       INTEGER BUF(2),K
        !           154: C
        !           155: C     SYSTEM DEPENDENT ROUTINE TO HANDLE SPECIAL CHARACTERS
        !           156: C
        !           157:       INTEGER AT,UP,D,COLON
        !           158:       DATA AT/O"74"/,UP/O"76"/,D/O"04"/,COLON/O"7404"/
        !           159: C     TO HANDLE ASCII ON CDC NOS, AT SHOULD BE 74 OCTAL,
        !           160: C     UP SHOULD BE 76 OCTAL, D  SHOULD BE 04 OCTAL,
        !           161: C     AND COLON SHOULD BE 7404 OCTAL.
        !           162: C     IN SUBROUTINE MATLAB, THE DATA STATEMENTS FOR ALPHA AND ALPHB
        !           163: C     SHOULD BE ALTERED SO THAT ALPHA(41) IS 63 OCTAL (ASCII PERCENT)
        !           164: C     AND ALPHB(41) IS THE SAME AS THE COLON HERE.  
        !           165: C
        !           166: C     THE 12-BIT CODE FOR COLON IS AT FOLLOWED BY D
        !           167:       IF (BUF(1).EQ.AT .AND. BUF(2).EQ.D) BUF(2) = COLON
        !           168: C     OTHERWISE IGNORE THE TWO 12-BIT ESCAPE CHARACTERS
        !           169:       IF (BUF(1).EQ.AT .OR. BUF(1).EQ.UP) K = 0
        !           170: C
        !           171:       IF (K .NE. 0) WRITE(6,10) BUF(1)
        !           172:    10 FORMAT(1X,A1,' is not a MATLAB character.')
        !           173:       RETURN
        !           174:       END
        !           175:       SUBROUTINE USER(A,M,N,S,T)
        !           176:       REAL A(M,N),S,T
        !           177: C
        !           178:       INTEGER A3(9)
        !           179:       DATA A3 /-149,537,-27,-50,180,-9,-154,546,-25/
        !           180:       IF (A(1,1) .NE. 3.0E0) RETURN
        !           181:       DO 10 I = 1, 9
        !           182:          A(I,1) = A3(I)
        !           183:    10 CONTINUE
        !           184:       M = 3
        !           185:       N = 3
        !           186:       RETURN
        !           187:       END
        !           188:       SUBROUTINE PROMPT(PAUSE)
        !           189:       INTEGER PAUSE
        !           190: C
        !           191: C     ISSUE MATLAB PROMPT WITH OPTIONAL PAUSE
        !           192: C
        !           193:       INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE,HIO
        !           194:       COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE,HIO
        !           195:       WRITE(WTE,10)
        !           196:       IF (WIO .NE. 0) WRITE(WIO,10)
        !           197:    10 FORMAT(1X,/'<>')
        !           198:       IF (PAUSE .EQ. 1) READ(RTE,20) DUMMY
        !           199:    20 FORMAT(A1)
        !           200:       RETURN
        !           201:       END
        !           202:       SUBROUTINE PLOT(LUNIT,X,Y,N,P,K,BUF)
        !           203:       REAL X(N),Y(N),P(1)
        !           204:       INTEGER BUF(79)
        !           205: C
        !           206: C     PLOT X VS. Y ON LUNIT
        !           207: C     IF K IS NONZERO, THEN P(1),...,P(K) ARE EXTRA PARAMETERS
        !           208: C     BUF IS WORK SPACE
        !           209: C
        !           210:       REAL XMIN,YMIN,XMAX,YMAX,DY,DX,Y1,Y0
        !           211:       INTEGER AST,BLANK,H,W
        !           212:       DATA AST/1H*/,BLANK/1H /,H/20/,W/79/
        !           213: C
        !           214: C     H = HEIGHT, W = WIDTH
        !           215: C
        !           216:       XMIN = X(1)
        !           217:       XMAX = X(1)
        !           218:       YMIN = Y(1)
        !           219:       YMAX = Y(1)
        !           220:       DO 10 I = 1, N
        !           221:          XMIN = AMIN1(XMIN,X(I))
        !           222:          XMAX = AMAX1(XMAX,X(I))
        !           223:          YMIN = AMIN1(YMIN,Y(I))
        !           224:          YMAX = AMAX1(YMAX,Y(I))
        !           225:    10 CONTINUE
        !           226:       DX = XMAX - XMIN
        !           227:       IF (DX .EQ. 0.0) DX = 1.0
        !           228:       DY = YMAX - YMIN
        !           229:       WRITE(LUNIT,35)
        !           230:       DO 40 L = 1, H
        !           231:          DO 20 J = 1, W
        !           232:             BUF(J) = BLANK
        !           233:    20    CONTINUE
        !           234:          Y1 = YMIN + (H-L+1)*DY/H
        !           235:          Y0 = YMIN + (H-L)*DY/H
        !           236:          JMAX = 1
        !           237:          DO 30 I = 1, N
        !           238:             IF (Y(I) .GT. Y1) GO TO 30
        !           239:             IF (L.NE.H .AND. Y(I).LE.Y0) GO TO 30
        !           240:             J = 1 + (W-1)*(X(I) - XMIN)/DX
        !           241:             BUF(J) = AST
        !           242:             JMAX = MAX0(JMAX,J)
        !           243:    30    CONTINUE
        !           244:          WRITE(LUNIT,35) (BUF(J),J=1,JMAX)
        !           245:    35    FORMAT(1X,79A1)
        !           246:    40 CONTINUE
        !           247:       RETURN
        !           248:       END
        !           249:       SUBROUTINE EDIT(BUF,N)
        !           250:       INTEGER BUF(N)
        !           251: C
        !           252: C     CALLED AFTER INPUT OF A SINGLE BACKSLASH
        !           253: C     BUF CONTAINS PREVIOUS INPUT LINE, ONE CHAR PER WORD
        !           254: C     ENTER LOCAL EDITOR IF AVAILABLE
        !           255: C     OTHERWISE JUST
        !           256:       RETURN
        !           257:       END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.