Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0137/csmp/csmp2.for
There is 1 other file named csmp2.for in the archive. Click here to see a list.
SUBROUTINE CSM4
C INITIAL CONDITIONS AND PARAMETERS
INTEGER TEST2,TEST9
LOGICAL RSAC
DIMENSION MTRX1(75),PAR(75,3)
COMMON REALS(395),INTS(547)
COMMON/NOPR/INPVAR
EQUIVALENCE (INTS(1),MTRX1(1))
EQUIVALENCE (INTS(526),TEST2),(INTS(533),TEST9)
EQUIVALENCE (REALS(81),PAR(1,1))
C GET INPUT UNIT TEST2
IF(INPVAR.NE.-1)WRITE(30,10)
10 FORMAT(/10X,29HINITIAL CONDITIONS/PARAMETERS/)
IF (TEST2.EQ.5) GO TO 40
C NON-TTY INPUT
IF(INPVAR.NE.-1)WRITE(30,30)
30 FORMAT(6H BLOCK,3X,7HIC/PAR1,8X,4HPAR2,10X,4HPAR3)
GO TO 60
C TTY INPUT
40 WRITE(30,50)
50 FORMAT(27H BLOCK, IC/PAR1, PAR2, PAR3/)
C INPUT STATEMENTS
60 I=KINPUT(0,IERR)
IF (IERR) 400,70,300
70 IF (I) 300,400,80
80 IF (I.GT.75) GO TO 300
P3=0.0
P2=0.0
P1=FINPUT(0,IERR)
IF (IERR) 150,90,280
90 P2=FINPUT(0,IERR)
IF (IERR) 150,100,280
100 P3=FINPUT(0,IERR)
IF (IERR) 150,110,280
110 IF (FINPUT(-1,IERR).NE.0.0) GO TO 280
C LEGAL BLOCK NUMBERS AND PARAMETERS
150 ITYPE=MTRX1(I)
IF (ITYPE) 240,160,180
160 WRITE(30,170)
170 FORMAT(41H NO CORRESPONDING CONFIGURATION STATEMENT/)
GO TO 240
C TEST PARAMETERS
180 IF (ITYPE.GT.10) GO TO 190
C MODIFIED FOR BLOCKS A,C,E 25 APR 74.
GO TO (240,210,240,230,240,230,220,210,240,210),ITYPE
190 IF (ITYPE.GT.20) GO TO 200
ITYPE=ITYPE-10
GO TO (220,230,210,210,220,210,210,210,220,220),ITYPE
200 ITYPE=ITYPE-20
GO TO (220,220,240,210,230,220,210,210,210),ITYPE
210 IF (P1.NE.0.) GO TO 280
220 IF (P2.NE.0.) GO TO 280
230 IF (P3.NE.0.) GO TO 280
240 PAR(I,1)=P1
PAR(I,2)=P2
PAR(I,3)=P3
IF (TEST2.EQ.5.OR.RSAC(10)) GO TO 60
C TELEPRINTER RECORD
K=3
DO 250 L=1,3
IF (PAR(I,K).NE.0.0) GO TO 260
250 K=K-1
WRITE(30,270) I
GO TO 60
260 IF(INPVAR.NE.-1)WRITE(30,270) I,(PAR(I,L),L=1,K)
270 FORMAT(3X,I2,1X,3(1X,G13.6))
GO TO 60
280 WRITE(30,290)
290 FORMAT(33H IMPROPER PARAMETER SPECIFICATION/)
GO TO 320
300 WRITE(30,310)
310 FORMAT(21H INVALID BLOCK NUMBER/)
320 TEST9=-1
GO TO 60
C END OF INITIAL CONDITION AND PARAMETER SPECIFICATION
400 TEST9=0
RETURN
END
SUBROUTINE CSM5
C FUNCTION GENERATOR SPECIFICATIONS
INTEGER TEST2,TEST9
LOGICAL RSAC
DIMENSION MTRX(75,5),NOFG(3),F(3,11),C(76),PAR1(75),PAR2(75)
COMMON REALS(395),INTS(547)
COMMON/NOPR/INPVAR
EQUIVALENCE (INTS(1),MTRX(1,1))
EQUIVALENCE (INTS(421),NOFG(1))
EQUIVALENCE (INTS(526),TEST2),(INTS(533),TEST9)
EQUIVALENCE (REALS(2),C(1)),(REALS(81),PAR1(1))
EQUIVALENCE (REALS(156),PAR2(1)),(REALS(306),F(1,1))
C GET INPUT UNIT TEST2
IF(INPVAR.NE.-1)WRITE(30,10)
10 FORMAT(/10X,33HFUNCTION GENERATOR SPECIFICATIONS/)
C GET BLOCK NUMBER
20 I=KINPUT(0,IERR)
IF (IERR) 300,30,200
30 IF (I) 240,300,40
40 IF (I.GT.75.OR.MTRX(I,1).NE.6) GO TO 240
C FIND SPOT FOR THE FUNCTION GENERATOR
DO 50 M=1,3
IF (I.EQ.NOFG(M)) GO TO 70
50 CONTINUE
DO 60 M=1,3
N=NOFG(M)
IF (N.EQ.0.OR.MTRX(N,1).NE.6) GO TO 70
60 CONTINUE
GO TO 240
70 N=1
C GET INTERCEPTS
80 C(N)=FINPUT(0,IERR)
IF (IERR) 80,90,200
90 N=N+1
IF (N.LE.11) GO TO 80
IF (FINPUT(-1,IERR).NE.0.0) GO TO 220
C STORE FUNCTION GENERATOR
MTRX(I,5)=M
NOFG(M)=I
DO 100 N=1,11
100 F(M,N)=C(N)
IF(INPVAR.EQ.-1)GO TO 120
IF (TEST2.NE.5.AND..NOT.RSAC(10)) WRITE(30,110) I,(C(N),N=1,11)
C TELEPRINTER RECORD
110 FORMAT(I3,9X,5(1X,G11.4)/6(1X,G11.4))
C CHECK PAR1 AND PAR2
120 IF (PAR1(I).GT.PAR2(I)) GO TO 20
WRITE(30,130) I
130 FORMAT(44H SPECIFY LIMITS FOR FUNCTION GENERATOR BLOCK,I3/)
140 WRITE(30,150)
150 FORMAT(14H UPPER, LOWER=$)
PAR1(I)=FINPUT(0,IERR)
IF (IERR.NE.0) GO TO 140
PAR2(I)=FINPUT(0,IERR)
IF (IERR) 120,160,140
160 IF (FINPUT(-1,IERR).NE.0.0) GO TO 140
GO TO 120
C ERROR SECTION
200 WRITE(30,210)
210 FORMAT(13H SYNTAX ERROR/)
GO TO 260
220 WRITE(30,230)
230 FORMAT(30H TOO MANY INTERCEPTS SPECIFIED/)
GO TO 260
240 WRITE(30,250) I
250 FORMAT(6H BLOCK,I3,40H WAS NOT DEFINED AS A FUNCTION GENERATOR/)
260 TEST9=-1
GO TO 20
C END OF FUNCTION GENERATOR SPECIFICATION
300 TEST9=0
RETURN
END
SUBROUTINE CSM6
C OPTION TO OUTPUT UPDATED MODEL
INTEGER OU,TEST4
LOGICAL RSAC
DIMENSION MTRX(75,5),NOFG(3),F(3,11),PAR(75,3)
COMMON REALS(395),INTS(547)
COMMON/EXTRA2/TY(30)
EQUIVALENCE (INTS(1),MTRX(1,1)),(INTS(421),NOFG(1))
EQUIVALENCE (INTS(528),TEST4)
EQUIVALENCE (REALS(81),PAR(1,1)),(REALS(306),F(1,1))
COMMON /PDEVIM/OU
C OUTPUT OF MODEL
WRITE(OU,10)
10 FORMAT(1H1)
30 FORMAT(1H )
C OUTPUT CONFIGURATION SPECIFICATIONS
40 DO 80 I=1,75
J=MTRX(I,1)
IF (J.LE.0) GO TO 80
K=4
DO 50 L=1,3
IF (MTRX(I,K).NE.0) GO TO 60
50 K=K-1
WRITE(OU,70) I,TY(J)
GO TO 80
60 WRITE(OU,70) I,TY(J),(MTRX(I,L),L=2,K)
70 FORMAT(3X,I2,5X,A1,3(6X,I3))
80 CONTINUE
WRITE(OU,30)
C OUTPUT INITIAL CONDITIONS AND PARAMETERS
DO 130 I=1,75
J=MTRX(I,1)
IF (J.LE.0) GO TO 130
K=3
DO 100 L=1,3
IF (PAR(I,K).NE.0.0) GO TO 110
100 K=K-1
GO TO 130
110 IF (J.EQ.20.OR.J.EQ.21.OR.J.EQ.26) K=1
C THE PRECEDING STATEMENT DELETES TEMPORARY DELAY PARAMETERS
C GENERATED BY T (TIME PULSE), U (UNIT DELAY), AND
C Z (ZERO ORDER HOLD) BLOCKS DURING EXECUTION (OF CSM11)
WRITE(OU,120) I,(PAR(I,L),L=1,K)
120 FORMAT(3X,I2,1X,3(1X,G13.6))
130 CONTINUE
WRITE(OU,30)
C OUTPUT FUNCTION GENERATORS
IF (TEST4.EQ.1) GO TO 170
DO 160 I=1,3
J=NOFG(I)
IF (J.LE.0.OR.MTRX(J,1).NE.6) GO TO 160
C IT IS CONFIRMED THAT THE BLOCK IS A FUNCTION GENERATOR
WRITE(OU,140) J,(F(I,K),K=1,11)
140 FORMAT(I3,9X,5(1X,G11.4)/6(1X,G11.4))
160 CONTINUE
WRITE(OU,30)
170 WRITE (OU,180)
180 FORMAT(//1H1)
RETURN
END
SUBROUTINE CSM7
C REQUEST TIMING INFORMATION
INTEGER TEST7
COMMON REALS(395),INTS(547)
EQUIVALENCE (INTS(531),TEST7)
EQUIVALENCE (REALS(78),DT),(REALS(79),DTS2),(REALS(80),TTOT)
C
WRITE(30,10)
10 FORMAT(/10X,19HINTEGRATION CONTROL/)
TEST7=2
C TEST7=1 UNTIL FIRST TIME THROUGH CSM7
C TEST7=2 AFTER FIRST TIME THROUGH CSM7
20 WRITE(30,30)
30 FORMAT(22H INTEGRATION INTERVAL=$)
DT=FINPUT(0,IERR)
IF (IERR.NE.0) GO TO 20
IF (FINPUT(-1,IERR).NE.0.0) GO TO 20
IF (DT.GT.0.0) GO TO 60
WRITE(30,50)
50 FORMAT(44H INTEGRATION INTERVAL MUST BE GREATER THAN 0/)
GO TO 20
60 DTS2=0.5*DT
70 WRITE(30,80)
80 FORMAT(12H TOTAL TIME=$)
TTOT=FINPUT(0,IERR)
IF (IERR.NE.0) GO TO 70
IF (FINPUT(-1,IERR).NE.0.0) GO TO 70
IF (TTOT.GT.DT) RETURN
WRITE(30,90)
90 FORMAT(53H TOTAL TIME MUST BE GREATER THAN INTEGRATION INTERVAL/)
GO TO 70
END