Trailing-Edge
-
PDP-10 Archives
-
decuslib10-08
-
43,50515/splplt.for
There are 2 other files named splplt.for in the archive. Click here to see a list.
PROGRAM Spline
C
C ROUTINE TO TEST AND DEMONSTRATE SPLSUB.FOR (SPLPLT)
C
DIMENSION IBUF(30),X(20),Y(20)
INTEGER ANS
CALL ERRSET(0)
1 type 5
5 FORMAT(' ',T10,'S P L I N E P L O T R O U T I N E',/,
1 ' NUMBER OF DATA POINTS [4-20]? ',$)
READ(5,6)N
6 FORMAT(I)
IF((N.GE.4).AND.(N.LE.20))GOTO 9
type 7
7 FORMAT(' ** IMPROPER NUMBER OF DATA POINTS - RANGE 4-20 **')
GOTO 1
9 type 10
10 FORMAT(' ENTER X AND Y DATA (X IN ASCENDING ORDER)::')
I=1
WRITE(5,14)I
read (5,12)X(1),Y(1)
12 FORMAT(2F)
YMIN=Y(1)
YMAX=YMIN
DO 20 I=2,N
type 14,I
14 FORMAT(' data pair ',I2,':',$)
read (5,12)X(I),Y(I)
IF(Y(I) .GT. YMAX)YMAX=Y(I)
IF(Y(I) .LT. YMIN)YMIN=Y(I)
IF(I.EQ.1)GOTO 20
IF(X(I).GT.X(I-1))GOTO 20
type 15
15 FORMAT(' ** X DATA MUST BE IN ASCENDING ORDER **')
GOTO 9
20 CONTINUE
21 type 22
22 FORMAT(///' WHAT WINDOW SIZE WOULD YOU LIKE FOR THE SPLINE
1 FIT [4-20]? ',$)
read(5,6)NUMB
IF((NUMB.GE.4).AND.(NUMB.LE.20))GOTO 25
type 23
23 FORMAT(' ** WINDOW SIZE MUST BE IN THE RANGE OF 4-20 **')
GOTO 21
25 IF(NUMB.LE.N)GOTO 28
type 27
27 FORMAT(' ** WINDOW EXCEED AMOUNT OF DATA ENTERED **')
GOTO 21
28 type 29
29 FORMAT(' scaling data.......')
XMIN=X(1)
XMAX=X(N)
XINC=(XMAX-XMIN)/512.
CALL GRINIT(IBUF) !INITIALIZE BUFFER
CALL SPLPLT(IBUF,N,X,Y,NUMB,0,YMINS,YMAXS,XINC,mode,0)
IF(YMAXS .GT. YMAX)YMAX=YMAXS
IF(YMINS .LT. YMIN)YMIN=YMINS
C
C
CALL GRREGN(IBUF,0,3) !ASSIGN BOTH GRAPHS TO
CALL GRREGN(IBUF,1,3) !THE SAME REGION
CALL GRSCAL(IBUF,XMIN,XMAX,YMIN,YMAX,0) !SCALE GRAPH 0
CALL GRSCAL(IBUF,XMIN,XMAX,YMIN,YMAX,1) !SCALE GRAPH 1
CALL GRAPHS(IBUF,1+2+4+64+128,X,Y,N,0.0,0) !PLOT THE ACTUAL DATA
CALL GRCLN(IBUF,1) !CLEAR PLOT FOR GRAPH 1
C
C
CALL SPLPLT(IBUF,N,X,Y,NUMB,1,YMINS,YMAXS,XINC,mode,1)
CALL VTMCUR(24,1) !POSITION CURSOR
CALL SLEEP(5)
CALL VTCLR
200 CALL EXIT
END