|
|
1.1 ! root 1: C PROGRAM MAIN ! 2: CALL ERRSET(208,1000000,-1,1) ! 3: CALL ERRSET(207,1000000,0,1) ! 4: CALL MATLAB(0) ! 5: STOP ! 6: END ! 7: SUBROUTINE FILES(LUNIT,NAME,IOSTAT) ! 8: INTEGER LUNIT,NAME(32) ! 9: C ! 10: C SYSTEM DEPENDENT ROUTINE TO ALLOCATE FILES ! 11: C LUNIT = LOGICAL UNIT NUMBER ! 12: C NAME = FILE NAME, 1 CHARACTER PER WORD ! 13: C ! 14: C THIS VERSION FOR SYSTEMS LIKE TSO WITHOUT OPEN AND CLOSE ! 15: C ! 16: L = -LUNIT ! 17: IF (LUNIT .LT. 0) REWIND L ! 18: IF (LUNIT .GT. 0) WRITE(6,13) ! 19: 13 FORMAT(1X,'SORRY, OPEN IS NOT AVAILABLE') ! 20: RETURN ! 21: END ! 22: SUBROUTINE SAVLOD(LUNIT,ID,M,N,IMG,JOB,XREAL,XIMAG) ! 23: INTEGER LUNIT,ID(4),M,N,IMG,JOB ! 24: DOUBLE PRECISION XREAL(1),XIMAG(1) ! 25: C ! 26: C IMPLEMENT SAVE AND LOAD ! 27: C LUNIT = LOGICAL UNIT NUMBER ! 28: C ID = NAME, FORMAT 4A1 ! 29: C M, N = DIMENSIONS ! 30: C IMG = NONZERO IF XIMAG IS NONZERO ! 31: C JOB = 0 FOR SAVE ! 32: C = SPACE AVAILABLE FOR LOAD ! 33: C XREAL, XIMAG = REAL AND OPTIONAL IMAGINARY PARTS ! 34: C ! 35: C SYSTEM DEPENDENT FORMATS ! 36: 101 FORMAT(4A1,3I4) ! 37: 102 FORMAT(4Z18) ! 38: C ! 39: IF (JOB .GT. 0) GO TO 20 ! 40: C ! 41: C SAVE ! 42: 10 WRITE(LUNIT,101) ID,M,N,IMG ! 43: DO 15 J = 1, N ! 44: K = (J-1)*M+1 ! 45: L = J*M ! 46: WRITE(LUNIT,102) (XREAL(I),I=K,L) ! 47: IF (IMG .NE. 0) WRITE(LUNIT,102) (XIMAG(I),I=K,L) ! 48: 15 CONTINUE ! 49: RETURN ! 50: C ! 51: C LOAD ! 52: 20 READ(LUNIT,101,END=30) ID,M,N,IMG ! 53: IF (M*N .GT. JOB) GO TO 30 ! 54: DO 25 J = 1, N ! 55: K = (J-1)*M+1 ! 56: L = J*M ! 57: READ(LUNIT,102,END=30) (XREAL(I),I=K,L) ! 58: IF (IMG .NE. 0) READ(LUNIT,102,END=30) (XIMAG(I),I=K,L) ! 59: 25 CONTINUE ! 60: RETURN ! 61: C ! 62: C END OF FILE ! 63: 30 M = 0 ! 64: N = 0 ! 65: RETURN ! 66: END ! 67: SUBROUTINE FORMZ(LUNIT,X,Y) ! 68: DOUBLE PRECISION X,Y ! 69: C ! 70: C SYSTEM DEPENDENT ROUTINE TO PRINT WITH Z FORMAT ! 71: C ! 72: IF (Y .NE. 0.0D0) WRITE(LUNIT,10) X,Y ! 73: IF (Y .EQ. 0.0D0) WRITE(LUNIT,10) X ! 74: 10 FORMAT(2Z18) ! 75: RETURN ! 76: END ! 77: DOUBLE PRECISION FUNCTION FLOP(X) ! 78: DOUBLE PRECISION X ! 79: C SYSTEM DEPENDENT FUNCTION ! 80: C COUNT AND POSSIBLY CHOP EACH FLOATING POINT OPERATION ! 81: C FLP(1) IS FLOP COUNTER ! 82: C FLP(2) IS NUMBER OF PLACES TO BE CHOPPED ! 83: C ! 84: INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2) ! 85: COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN ! 86: C ! 87: DOUBLE PRECISION MASK(13),XX,MM ! 88: LOGICAL LX(2),LM(2) ! 89: EQUIVALENCE (LX(1),XX),(LM(1),MM) ! 90: DATA MASK / ZFFFFFFFFFFFFFFF0,ZFFFFFFFFFFFFFF00, ! 91: $ ZFFFFFFFFFFFFF000,ZFFFFFFFFFFFF0000,ZFFFFFFFFFFF00000, ! 92: $ ZFFFFFFFFFF000000,ZFFFFFFFFF0000000,ZFFFFFFFF00000000, ! 93: $ ZFFFFFFF000000000,ZFFFFFF0000000000,ZFFFFF00000000000, ! 94: $ ZFFFF000000000000,ZFFF0000000000000/ ! 95: C ! 96: FLP(1) = FLP(1) + 1 ! 97: K = FLP(2) ! 98: FLOP = X ! 99: IF (K .LE. 0) RETURN ! 100: FLOP = 0.0D0 ! 101: IF (K .GE. 14) RETURN ! 102: XX = X ! 103: MM = MASK(K) ! 104: LX(1) = LX(1) .AND. LM(1) ! 105: LX(2) = LX(2) .AND. LM(2) ! 106: FLOP = XX ! 107: RETURN ! 108: END ! 109: SUBROUTINE XCHAR(BUF,K) ! 110: INTEGER BUF(1),K ! 111: C ! 112: C SYSTEM DEPENDENT ROUTINE TO HANDLE SPECIAL CHARACTERS ! 113: C ! 114: WRITE(6,10) BUF(1) ! 115: 10 FORMAT(1X,A1,' is not a MATLAB character.') ! 116: RETURN ! 117: END ! 118: SUBROUTINE USER(A,M,N,S,T) ! 119: DOUBLE PRECISION A(M,N),S,T ! 120: C ! 121: INTEGER A3(9) ! 122: DATA A3 /-149,537,-27,-50,180,-9,-154,546,-25/ ! 123: IF (A(1,1) .NE. 3.0D0) RETURN ! 124: DO 10 I = 1, 9 ! 125: A(I,1) = A3(I) ! 126: 10 CONTINUE ! 127: M = 3 ! 128: N = 3 ! 129: RETURN ! 130: END ! 131: SUBROUTINE PROMPT(PAUSE) ! 132: INTEGER PAUSE ! 133: C ! 134: C ISSUE MATLAB PROMPT WITH OPTIONAL PAUSE ! 135: C ! 136: INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE,HIO ! 137: COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE,HIO ! 138: WRITE(WTE,10) ! 139: IF (WIO .NE. 0) WRITE(WIO,10) ! 140: 10 FORMAT(/1X,'<>') ! 141: IF (PAUSE .EQ. 1) READ(RTE,20) DUMMY ! 142: 20 FORMAT(A1) ! 143: RETURN ! 144: END ! 145: SUBROUTINE PLOT(LUNIT,X,Y,N,P,K,BUF) ! 146: DOUBLE PRECISION X(N),Y(N),P(1) ! 147: INTEGER BUF(79) ! 148: C ! 149: C PLOT X VS. Y ON LUNIT ! 150: C IF K IS NONZERO, THEN P(1),...,P(K) ARE EXTRA PARAMETERS ! 151: C BUF IS WORK SPACE ! 152: C ! 153: DOUBLE PRECISION XMIN,YMIN,XMAX,YMAX,DY,DX,Y1,Y0 ! 154: INTEGER AST,BLANK,H,W ! 155: DATA AST/1H*/,BLANK/1H /,H/20/,W/79/ ! 156: C ! 157: C H = HEIGHT, W = WIDTH ! 158: C ! 159: XMIN = X(1) ! 160: XMAX = X(1) ! 161: YMIN = Y(1) ! 162: YMAX = Y(1) ! 163: DO 10 I = 1, N ! 164: XMIN = DMIN1(XMIN,X(I)) ! 165: XMAX = DMAX1(XMAX,X(I)) ! 166: YMIN = DMIN1(YMIN,Y(I)) ! 167: YMAX = DMAX1(YMAX,Y(I)) ! 168: 10 CONTINUE ! 169: DX = XMAX - XMIN ! 170: IF (DX .EQ. 0.0D0) DX = 1.0D0 ! 171: DY = YMAX - YMIN ! 172: WRITE(LUNIT,35) ! 173: DO 40 L = 1, H ! 174: DO 20 J = 1, W ! 175: BUF(J) = BLANK ! 176: 20 CONTINUE ! 177: Y1 = YMIN + (H-L+1)*DY/H ! 178: Y0 = YMIN + (H-L)*DY/H ! 179: JMAX = 1 ! 180: DO 30 I = 1, N ! 181: IF (Y(I) .GT. Y1) GO TO 30 ! 182: IF (L.NE.H .AND. Y(I).LE.Y0) GO TO 30 ! 183: J = 1 + (W-1)*(X(I) - XMIN)/DX ! 184: BUF(J) = AST ! 185: JMAX = MAX0(JMAX,J) ! 186: 30 CONTINUE ! 187: WRITE(LUNIT,35) (BUF(J),J=1,JMAX) ! 188: 35 FORMAT(1X,79A1) ! 189: 40 CONTINUE ! 190: RETURN ! 191: END ! 192: SUBROUTINE EDIT(BUF,N) ! 193: INTEGER BUF(N) ! 194: C ! 195: C CALLED AFTER INPUT OF A SINGLE BACKSLASH ! 196: C BUF CONTAINS PREVIOUS INPUT LINE, ONE CHAR PER WORD ! 197: C ENTER LOCAL EDITOR IF AVAILABLE ! 198: C OTHERWISE JUST ! 199: RETURN ! 200: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.