FILE:PLOT.DOC THIS FILE IS TO PROVIDE DOCUMENTATION FOR THE PLOT ROUTINE WRITTEN FOR DOUG PHILLIPS BY JEFF HAMILTON. PLOT.OLB CONTAINS: BOTTOM CLEARF CLEARI CLEARB ELMNTF ELMNTI GET GRID FLPLOT LABELX LABELY LIMITF LIMITI LINEX LINEY LOAD LOADI OFF ON PLOTFL PLOTIN SIDE TOP WHERXY ZTICK TO USE PLOT.OLB USE THIS: TKB A.TSK,A.MAP=A.OBJ,B.OBJ,...,DK1:[1,54]PLOT.OLB THIS WILL LINK THE PLOT SUBROUTINES WITH YOUR TASK. HERE IS AN EXAMPLE PROGRAM USING SOME OF THE SUBROUTINES CONTAINED IN PLOT.OLB. PROGRAM FFTPLT C C SET UP A PARAMETER FOR EASY CHANGING C PARAMETER ISIZE=1024 BYTE FILE(80) COMPLEX CRRAY(ISIZE) DIMENSION ARRAY(ISIZE),ERRAY(ISIZE),B(2),LIM(4) DIMENSION LIMITX(2),IK(2),LL(2),C(2),D(2),ALIM(2) C C FIND OUT THE NAME OF THE DATA FILE TO BE USED C TYPE *,'ENTER NAME OF FILE TO BE USED' ACCEPT 100,NCH,(FILE(I),I=1,NCH) 100 FORMAT(Q,80A1) C C TURN ON PLOTTER C CALL ON(2) C C FIND THE OUTSIDE LIMITS OF THE PLOTTING AREA C CALL GET(LIM) C C DRAW THE GRID WITH FOUR PLOTTING REGIONS C CALL GRID(LIM,-10,4) C C LOAD THE COMPLEX ARRAY WITH DATA FROM THE DATA FILE C CALL LOADC(CRRAY,ISIZE,FILE,1,1,ISTAT) C C CHECK FOR PROPER COMPLEATION C IF(ISTAT.EQ.1)GO TO 5 CALL EXIT C C GET ARRAYS TO BE PLOTTED C 5 DO 10,J=1,ISIZE ARRAY(J)=REAL(CRRAY(J)) 10 ERRAY(J)=AIMAG(CRRAY(J)) C C GET THE MAXIMUM AND MINIMUM OF THE REAL ARRAY C CALL LIMITF(ARRAY,ISIZE,B) C C SET UP THE LIMITS FOR THE ARRAY SIZE C LIMITX(1)=1 LIMITX(2)=ISIZE C C GET VALUES TO BE PRINTED ON THE BOTTOM OF THE PLOT. C ALIM(1)=1. ALIM(2)=FLOAT(ISIZE) C C PLOT THE REAL ARRAY IN THE FIRST PLACE ON THE PLOTTER C CALL PLOTFL(1,4,B,ARRAY,ISIZE,LIM,LIMITX) C C DRAW A TICK AT THE ZERO POINT FOR REFERENCE C CALL ZTICK(LIM,4,1,B) C C LABEL THE PLOT SO WE KNOW WHAT IT IS C CALL SIDE(LIM,'REAL DATA',9,4,1) C C LABEL THE Y LIMITS OF THE PLOTTED ARRAY C CALL LABELY(LIM,B,3,4,1,1.) C C PLOT THE IMAGINARY ARRAY IN THE SECOND PLOTTING REGION. C CALL PLOTFL(2,4,B,ERRAY,ISIZE,LIM,LIMITX) C C DO ZERO TICK MARK C CALL ZTICK(LIM,4,2,B) C C LABEL THE SIDE C CALL SIDE(LIM,'IMAG DATA',9,4,2) C C LABEL THE LIMITS C CALL LABELY(LIM,B,3,4,2,1.) C C DO THE FFT C CALL FFT(CRRAY,ISIZE,1) C C LOAD THE PLOTTING ARRAYS C DO 20, J=1,ISIZE ARRAY(J)=REAL(CRRAY(J)) 20 ERRAY(J)=AIMAG(CRRAY(J)) C C FIND THE LIMITS OF THE REAL FFT C CALL LIMITF(ARRAY,ISIZE,C) C C FIND THE POSITION OF THE MAXIMUM FOR LATER USE C CALL ELMNTF(ARRAY,ISIZE,IK) C C FIND TWO POINTS ON EITHER SIDE OF THE MAXIMUM C LL(1)=IK(2)-10 LL(2)=IK(2)+10 C C PLOT THE REAL FFT IN THE THIRD POSITION C CALL PLOTFL(3,4,C,ARRAY,ISIZE,LIM,LIMITX) C C DO ZERO TICK MARK C CALL ZTICK(LIM,4,3,C) C C DRAW A LINE ACROSS THE MAXIMUM ABOUT HALF WAY UP C CALL LINEX(LIM,4,3,C,C(2)/2.,LIMITX,LL) C C LABEL THE PLOT C CALL SIDE(LIM,'REAL FFT',8,4,3) C C LABEL THE LIMITS C CALL LABELY(LIM,C,3,4,3,1.) C C FIND THE LIMITS OF THE IMAGINARY FFT C CALL LIMITF(ERRAY,ISIZE,D) C C PLOT THE IMAGINARY FFT IN THE FOURTH POSITION C CALL PLOTFL(4,4,D,ERRAY,ISIZE,LIM,LIMITX) C C DO THE ZERO TICK MARKS C CALL ZTICK(LIM,4,4,D) C C LABEL THE PLOT C CALL SIDE(LIM,'IMAG FFT',8,4,4) C C LABEL THE LIMITS C CALL LABELY(LIM,D,3,4,4,1.) C C LABEL THE BOTTOM OF THE PLOT SO WE CAN TELL HOW MANY POINTS C THERE IS. C CALL LABELX(LIM,ALIM,1,1.) C C DRAW A LINE DOWN THE MIDDLE OF THE FFT PLOTS BECAUSE C THEY ARE JUST MIRRORS OF THEMSELVES. C CALL LINEY(LIM,4,3,C,ISIZE/2,LIMITX,C) CALL LINEY(LIM,4,4,D,ISIZE/2,LIMITX,D) C C WRITE THE FILE NAME ON THE BOTTOM OF THE PLOT SO C WE WILL KNOW WHERE THE DATA CAME FROM. C CALL BOTTOM(LIM,FILE,NCH) C C WRITE OUR NAME ON THE TOP SO THEY WILL KNOW WHO C DID THIS GREATJOB. C CALL TOP(LIM,'FFTPLT',6) C C TURN PLOTTER OFF C CALL OFF END BOTTOM THE SUBROUTINE BOTTOM WILL ENABLE THE USER TO PRINT A STRING ON THE BOTTOM OF THE PLOT. FORM: CALL BOTTOM(LIM,ARRAY,ISIZE) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. BYTE ARRAY DIMENSION ARRAY(ISIZE) A STRING ARRAY IS WRITTEN ON THE BOTTOM OF THE PLOT SO AS TO NOT INTERFER WITH THE OUTPUT FROM LABELX. THERE ARE ISIZE CHARACTERS. THE DEFAULT SIZE FOR THE CHARACTERS ARE USED UNLESS THERE ARE TOO MANY; WHERE AUTO SCALING COMES INTO EFFECT TO MAKE THEM FIT. CLEARF THE SUBROUTINE CLEARF WILL SET ALL THE ELEMENTS OF A FLOATING POINT ARRAY TO ZERO. FORM: CALL CLEARF(ARRAY,ISIZE) WHERE: DIMENSION ARRAY(ISIZE) CLEARI THE SUBROUTINE CLEARI WILL SET ALL THE ELEMENTS OF A INTEGER ARRAY TO ZERO. FORM: CALL CLEARI(IRRAY,ISIZE) WHERE: DIMENSION IRRAY(ISIZE) CLEARB THE SUBROUTINE CLEARB WILL SET ALL THE ELEMENTS OF A BYTE ARRAY TO OCTAL ZERO. FORM: CALL CLEARB(ARRAY,ISIZE) WHERE: BYTE ARRAY DIMENSION ARRAY(ISIZE) ELMNTF THE SUBROUTINE ELMNTF WILL RETURN THE ARRAY ELEMENT POSITION WHERE THERE IS THE MAXIMUM AND MINIMUM VALUES OF THE ARRAY. FORM: CALL ELMNTF(ARRAY,ISIZE,IK) WHERE: DIMENSION ARRAY(ISIZE) DIMENSION IK(2) IK(1) IS THE ARRAY ELEMENT WITH THE MINIMUM OF THE ARRAY IK(2) IS THE ARRAY ELEMENT WITH THE MAXIMUM OF THE ARRAY THE INTEGERS THAT ARE RETURNED CAN BE USED IN FFT ANALYSIS TO FIND THE CENTER FREQUENCIES. ELMNTI THE SUBROUTINE ELMNTI WILL RETURN THE ARRAY ELEMENT POSITION WHERE THERE IS THE MAXIMUM AND MINIMUM VALUES OF THE INTEGER ARRAY. FORM: CALL ELMNTI(IRRAY,ISIZE,IK) WHERE: DIMENSION IRRAY(ISIZE) DIMENSION IK(2) IK(1) IS THE ARRAY ELEMENT WITH THE MINIMUM VALUE IN THE ARRAY IK(2) IS THE ARRAY ELEMENT WITH THE MAXIMUM VALUE IN THE ARRAY THE INTEGERS THAT ARE RETURNED CAN BE USED IN FFT ANALYSIS TO FIND THE CENTER FREQUENCY. GET THE SUBROUTINE GET WILL RETURN THE OUTSIDE LIMITS IN THE FORM OF A FOUR ELEMENT ARRAY. FORM: CALL GET(LIM) WHERE : DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. A STANDARD SIZE PLOT WILL FILL A STANDARD SIZE PIECE OF PRINTER PAPER. THE SUBROUTINE WILL ASK THE ENTERING TERMINAL IF A STANDARD SIZE PLOT IS DESIRED. A Y RETURN WILL RETURN TO THE CALLING PROGRAM, THE STANDARD COORDINATES. ANY OTHER ANSWER WILL ENABLE THE USER TO ENTER THE LIMITS VIA THE CALL BUTTON ON THE PLOTTER. GRID THE SUBROUTINE GRID WILL DRAW ON THE PLOTTER THE OUTSIDE GRID TO BE USED BY THE OTHER SUBROUTINES. FORM: CALL GRID(LIM,NUMX,NUMY) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. NUMX ISTHE NUMBER OF DIVIDED OFF REGIONS IN THE X DIRECTION(TICKS IF NEGATIVE) NUMY IS THE NUMBER OF DIVIDED OFF REGIONS IN THE Y DIRECTION(TICKS IF NEG) THE SIZE OF THE GRID IS DETERMINED BY LIM, WHICH CAN COME FROM THE GET SUBROUTINE. IF NUMX IS NEGATIVE, TICK MARKS WILL BE DRAWN AT THE TOP AND BOTTOM OF THE GRID. IF POSITIVE, THEN LINES WILL BE DRAWN ALL THE WAY ACROSS. THE SAME OCCURS FOR NUMY. NOTICE : NUMX AND NUMY ARE THE NUMBER OF REGIONS AND NO THE NUMBER OF LINES. FLPLOT THE SUBROUTINE FLPLOT WILL PLOT AN ARRAY OF FLOATING POINT NUMBERS ON THE PLOTTER ON THE PLOT AT A SPECIFIC LOCATION. FORM: CALL FLPLOT(I,NUM,B,ARRAY,ISIZE,LIM,LIMITX,IXX,FX) WHERE: I IS THE REGION NUMBER ON THE PLOT COUNTING DOWN. NUM IS THE TOTAL NUMBER OF REGIONS. DIMENSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT. DIMENSION ARRAY(ISIZE) DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER ARRAY ELEMENT TO USE IN PLOT LIMITX(2) IS THE UPPER INTEGER ARRAY ELEMENT TO USE IN PLOT IXX IS THE POSITION NUMBER ON THE X DIRECTION THE ARRAY IS PLOTTED AT. IXX=0 SETS ALL THE ARRAY ELEMENTS OUTSIDE THE RANGE OF ISIZE TO 0 FX IS THE FLOATING POINT NUMBER LAST USED IN THE PLOTFL ROUTINE(NEEDED TO CONNECT THE ARRAY ELEMENTS IN MULTI ARRAY PLOTS IN THE SAME PLOTTING REGION THE VALUE IN ARRAY WILL BE CONNECTED IN A PLOT THAT IS SCALED SO THAT THE TOP OF THE PLOTTING REGION CORRESPONDS TO B(2) AND THE BOTTOM TO B(1). THE LOWER X LIMIT WILL BE LIMITX(1) AND THE UPPER X LIMIT WILL BE LIMITX(2) AND THE POINTS WILL BE PLACED IN ASCENDING ORDER AS INTEGERS. MORE THAN ONE SET OF ARRAYS CAN BE PLOTTED IN THE REGION IF THE IXX VALUE TELLS WHERE THEY ARE TO BE PLOTTED AND FX IS USED SO THAT THE END OF ONE ARRAY WILL PROPERLY CONNECT WITH THE FIRST OF THE NEXT ARRAY. LABELX THE SUBROUTINE LABELX WILL ENABLE THE USER TO PRINT THE LIMITS OF THE PLOTTED DATA ON THE X AXIS. FORM: CALL LABELX(LIM,VALUE,ITYPE,SCALE) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. DIMENSION VALUE(2) VALUE(1) IS THE LOWER VALUE TO BE PRINTED. VALUE(2) IS THE UPPER VALUE TO BE PRINTED. ITYPE IS THE FORMAT TO BE USED. ITYPE=1 INTEGER FORM ITYPE=2 FLOATING POINT FORM ITYPE=3 EXPONINTIAL FORM SCALE IS THE FRACTION OF THE DEFAULT SIZE THE VAULUES ARE PRINTED ON THE BOTTOM OF THE PLOT NEAR THE LEFT SIDE FOR THE LOWER VALUE AND NEAR THE RIGHT SIDE FOR THE UPPER VALUE. THE FORMAT IS DETERMINED BY THE ITYPE VALUE. IF THE INTEGER FORM IS CHOSEN THEN IT MUST BE LESS THAN 32000. THE FLOATING POINT FORMAT IS CHOSEN TO MATCH THE NUMBER AND UNEXPECTED RESULTS CAN HAPPEN IF IT IS TOO LARGE OR TOO SMALL. IF THE RANGE IS UNKNOWN OR IT IS KNOWN TO BE TOO LARGE THE EXPONITIAL FORMAT SHOULD BE CHOSEN. THE DEFAULT SIZE FOR THE LETTERS IS 56 WIDE BE 88 TALL. A VALUE OF SCALE=1. WILL MAKE THE THE NUMBERS THIS SIZE. LABELY THE SUBROUTINE LABELY WILL PRINT THE MAX AND MIN VALUES OF THE PLOTS YOU DO. IF MORE THAN ONE PLOT IS DONE IN THE VERTICAL DIRECTION THE LOCATION SHOULD BE SPECIFIED. FORM: CALL LABELY(LIM,VALUE,ITYPE,NUM,I,SCALE) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) ISTHE TOP COOR. LIM(4) IS THE BOTTOM COOR. DIMENSION VALUE(2) VALUE(1) IS THE LOWER VALUE TO BE PRINTED. VALUE (2) IS THE UPPER VALUE TO BE PRINTYED. ITYPE IS THE FORMAT TO BE USED. ITYPE=1 INTEGER FORMAT ITYPE=2 FLOATING POINT FORMAT ITYPE=3 EXPONITIAL FORMAT NUM IS THE TOTAL NUMBER OF VERTICAL PLOTS. I IS THE POSITION NUMBER OF THE PLOT BEING LABELED. COUNTING DOWN. SCALE IS THE FRACTION OF THE DEFAULT SIZE. THE VALUES ARE PRINTED ON THE LEFT SIDE OF THE PLOT. THE UPPER VALUE IS PRINTED NEAR THE UPPER SIDE OF THE PLOT SELECTED. THE LOWER VALUE IS PRINTED NEAR THE LOWER SIDE OF THE PLOT SELECTED. THE FORMAT IS DETERMINED BY THE ITYPE VALUE. AUTO SCALING OF NUMBER SIZE MAY TAKE OVER IF THEY WONT FIT IN THE SPACE PROVIDED. IF THE INTEGER FORM IS CHOSEN THEN IT MUST BE LESS THAN 32000. THE FLOATING POINT FORMAT IS CHOSEN TO MATCH THE NUMBER AND UNEXPECTED RESULTS CAN HAPPEN IF IT IS TOO LARGE OR TOO SMALL. IF THE RANGE IS UNKNOWN OR IT IS KNOWN TO BE TOO LARGE THE EXPONITIAL FORMAT SHOULD BE CHOSEN. THE DEFAULT SIZE FOR THE LETTERS IS 56 WIDE BE 88 TALL. A VALUE OF SCALE=1. WILL MAKE THE THE NUMBERS THIS SIZE. LIMITF THE SUBROUTINE LIMITF WILL RETURN THE MAXIMUM AND MINIMUM VALUES OF A REAL ARRAY. FORM: CALL LIMITF(ARRAY,ISSIZE,B) WHERE: DIMENSION ARRAY(ISIZE) DIMENSION B(2) B(1) IS THE MINUMUM VALUE OF THE ARRAY. B(2) IS THE MAXIMUM VALUE OF THE ARRAY. THE VALUES THAT ARE RETURNED CAN BE USED IN LABELY TO CORRECTLY LABEL THE SCALING. LIMITI THE SUBROUTINE LIMITI WILL RETURN THE MAXIMUM AND MINIMUM VALUES OF AN INTEGER ARRAY. FORM: CALL LIMITI(IRRAY,ISIZE,K) WHERE: DIMENSION IRRAY(ISIZE) DIMENSION K(2) K(1) IS THE MINIMUM VALUE OF THE IRRAY. K(2) IS THE MAXIMUM VALUE OF THE IRRAY. THE VALUES THAT ARE RETURNED CAN BE USED IN LABELX OR LABELY TO CORRECTLY LABEL THE SCALING. LINEX THE SUBROUTINE LINEX WILL DRAW A HORIZONTAL LINE IN THE GIVEN REGION SCALED TO THE RIGHT HEIGHT BETWEEN TWO GIVEN ARRAY ELEMENT NUMBERS. FORM: CALL LINEX(LIM,NUM,I,B,Y,LIMITX,LL) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. NUM IS THE NUMBER OF PLOTTING REGIONS BEING USED I IS THE PLOTTING REGION BEING USED NOW DIMENSSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT Y IS THE VALUE AT WHICH THE LINE IS THE BE DRAWN DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER X LIMIT USED IN THE PLOT LIMITX(2) IS THE UPPER INTEGER X LIMIT USED IN THE PLOT DIMENSION LL(2) LL(1) IS THE LOWER POSITION NUMBER TO START LINE AT LL(2) IS THE UPPER POSITION NUMBER TO STOP LINE AT LINEY THE SUBROUTINE LINEY WILL DRAW A VERTICAL LINE IN THE GIVEN REGION SCALED TO THE RIGHT HEIGHT BETWEEN TWO GIVEN Y VALUES. FORM: CALL LINEY(LIN,NUM,I,B,IPOS,LIMITX,YL) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. NUM IS THE NUMBER OF REGIONS BEING USED FOR THIS PLOT I IS THE REGION NUMBER BEING USED ON THIS CALL DIMENSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT IPOS IS THE ARRAY ELEMENT AT WHICH THE LINE IS TO BE DRAWN DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER X LIMIT USED IN THE PLOT LIMITX(2) IS THE UPPER INTEGER X LIMIT USED IN THE PLOT DIMENSION YL(2) YL(1) IS THE LOWER Y VALUE TO START LINE AT YL(2) IS THE UPPER Y VALUE TO STOP AT LOAD THE SUBROUTINE LOAD WILL LOAD AN ARRAY WITH NUMBERS READ IN FROM A DATA FILE. FORM: CALL LOAD(ARRAY,ISIZE,FILE,ISTART,ILUN,ISTAT) WHERE: DIMENSION ARRAY(ISIZE) BYTE FILE DIMENSION FILE(80) ISTART IS THE PLACE IN THE DATA FILE FOR ARRAY(1) ILUN IS THE LOGICAL UNIT NUMBER ISTAT IS THE STATUS WORD ISTAT=1 SUCCESSFUL ISTAT=0 ERROR IN READ ISTAT=I EOF BEFORE ISTART AT ELEMENT I ISTAT=-I EOF BEFORE ARRAY FILLED AT ELEMENT I THE DATA FILE WILL BE READ USING A F20.10 FORMAT. FILE IS A READONLY FILE. LOADC THE SUBROUTINE LOADC WILL LOAD A COMPLEX ARRAY WITH NUMBERS READ IN FROM A GIVEN DATA FILE. FORM: CALL LOADC(CRRAY,ISIZE,FILE,ISTART,ILUN,ISTAT) WHERE: COMPLEX CRRAY DIMENSION CRRAY(ISIZE) BYTE FILE DIMENSION FILE(80) ISTART IS THE PLACE IN THE DATA FILE FOR CRRAY(1) ILUN IS THE LOGICAL UNIT NUMBER TO USE ISTAT IS THE STATUS WORD ISTAT=1 SUCCESSFUL ISTAT=0 ERROR IN READ ISTAT=I EOF BEFORE ISTART AT ELEMENT I ISTAT=-1 EOF BEFORE CRRAY FILLED AT ELEMENT I THE DATA FILE WILL BE READ USING A * FORMAT. FILE IS TREATED AS A READONLY FILE. LOADI THE SUBROUTINE LOADI WILL LOAD AN IRRAY WITH NUMBERS READ IN FROM A DATA FILE. FORM: CALL LOADI(IRRAY,ISIZE,FILE,ISTART,ILUN,ISTAT) WHERE: DIMENSION IRRAY(ISIZE) BYTE FILE DIMENSION FILE(80) ISTART IS THE PLACE IN THE DATA FILE FOR IRRAY(1) ILUN IS THE LOGICAL UNIT NUMBER ISTAT IS THE STATUS WORD ISTAT=1 SUCCESSFUL ISTAT=0 ERROR IN READ ISTAT=I EOF BEFORE ISTART AT ELEMENT I ISTAT=-I EOF BEFORE ARRAY FILLED AT ELEMENT I THE DATA FILE WILL BE READ USING A F20.10 FORMAT. FILE IS A READONLY FILE. OFF THE SUBROUTINE OFF WILL TURN THE PLOTTER OFF AT THE CONCLUSION OF THE PROGRAM. FORM: CALL OFF ON THE SUBROUTINE ON WILL TURN THE PLOTTER ON AND WILL CONNECT IT WITH A SPECIFIC LUN. FORM: CALL ON(ILUN) WHERE: ILUN IS THE LOGICAL UNIT NUMBER PLOTFL THE SUBROUTINE PLOTFL WILL PLOT AN ARRAY OF FLOATING POINT NUMBERS ON THE PLOTTER ON THE PLOT AT A SPECIFIC LOCATION. FORM: CALL PLOTFL(I,NUM,B,ARRAY,ISIZE,LIM,LIMITX) WHERE: I IS THE REGION NUMBER ON THE PLOT COUNTING DOWN. NUM IS THE TOTAL NUMBER OF REGIONS. DIMENSSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT. DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER LIMIT TO USE IN PLOT LIMITX(2) IS THE UPPER INTEGER LIMIT TO USE IN PLOT THE VALUE IN ARRAY WILL BE CONNECTED IN A PLOT THAT IS SCALED SO THAT THE TOP OF THE PLOTTING REGION CORRESPONDS TO B(2) AND THE BOTTOM TO B(1). THE LOWER X LIMIT WILL BE LIMITX(1) AND THE UPPER X LIMIT WILL BE LIMITX(2) AND THE POINTS WILL BE PLACED IN ASCENDING ORDER AS INTEGERS. PLOTIN THE SUBROUTINE PLOTIN WILL PLOT AN IRRAY OF INTEGER NUMBERS ON THE PLOTTER ON THE PLOT AT A SPECIFIC LOCATION. FORM: CALL PLOTIN(I,NUM,K,IRRAY,ISIZE,LIM,LIMITX) WHERE: I IS THE REGION NUMBER ON THE PLOT COUNTING DOWN. NUM IS THE TOTAL NUMBER OF REGIONS. DIMENSION K(2) K(1) IS THE LOWER SCALE LIMIT K(2) IS THE UPPER SCALE LIMIT. DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER LIMIT TO USE IN PLOT LIMITX(2) IS THE UPPER INTEGER LIMIT TO USE IN PLOT THE VALUE IN IRRAY WILL BE CONNECTED IN A PLOT THAT IS SCALED SO THAT THE TOP OF THE PLOTTING REGION CORRESPONDS TO K(2) AND THE BOTTOM TO K(1). THE LOWER X LIMIT WILL BE LIMITX(1) AND THE UPPER X LIMIT WILL BE LIMITX(2) AND THE POINTS WILL BE PLACED IN ASCENDING ORDER AS INTEGERS. SIDE THE SUBROUTINE SIDE WILL WRITE A LITTLE LABEL ON THE PLOT TO DESCRIBE THEM. FORM: CALL SIDE(LIM,LABEL,ISIZE,NUM,I) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. BYTE LABEL DIMENSION LABEL(ISIZE) NUM IS THE NUMBER OF REGIONS TO BE PLOTTED. I IS THE REGION NUMBER COUNTING DOWN. THE LABEL WILL BE WRITTEN AT A 90 DEG ANGLE AND WILL BE AUTO SCALED TO FIT THE SPACE GIVEN IF THE DEFAULT SIZE WON'T WORK. THE LABEL WILL BE CENTERED IF THE DEFAULT WILL WORK. THE LABEL IS ADJUSTED NOT TO RUN INTO THE DEFAULT NUMBERS FROM LABELY. TOP THE SUBROUTINE TOP WILL ENABLE THE USER TO PRINT A STRING ON THE TOP OF THE PLOT. FORM: CALL TOP(LIM,ARRAY,ISIZE) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. BYTE ARRAY DIMENSION ARRAY(ISIZE) A STRING ARRAY IS WRITTEN ON THE TOP OF THE PLOT. THERE ARE ISIZE CHARACTERS. THE SIZE OF THE CHARACTERS IS 36 WIDE BY 60 TALL WHERE THE DEFAULT SIZE IS 56 BY 88. IF THERE ARE TOO MANY CHARACTERS THEN AUTO SCALING WILL COME IN TO EFFECT MAKING THE LETTERS SMALLER UNTIL THEY FIT. WHERXY THE SUBROUTINE WHERXY WILL RETURN TO THE CALLING PROGRAM THE X AND Y POSITIONS OF THE PEN (SCALED TO THE APPROPRIATE VALUES) WHEN THE PLOTTER CALL BUTTON IS PUSHED. FORM: CALL WHERXY(LIM,NUM,I,B,LIMITX,IXX,Y) WHERE: DIMENSION LIIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. NUM IS THE TOTAL NUMBER OF PLOTTING REGIONS I IS THE REGION NUMBER OF THE PLOT COUNTING DOWN DIMENSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT DIMENSION LIMITX(2) LIMITX(1) IS THE LOWER INTEGER LIMIT USED IN THE PLOT LIMITX(2) IS THE UPPER INTEGER LIMIT USED IN THE PLOT IXX IS THE ARRAY ELEMENT POSITION OF THE PEN WHEN CALL WAS PRESSED Y IS THE Y VALUE SCALED TO THE LIMITS OF THE PLOT WHEN CALL WAS PRESSED THIS SUBROUTINE WILL PICK OUT AN ARRAY ELEMENT AND THE Y VALUE THAT CORRESPONDS TO THE POSITION OF THE PEN WHEN THE PLOTTER CALL BUTTON IS PRESSED. IT CAN THEREFORE BE USED TO FIND AN ARRAY ELEMENT OR THE Y VALUE IN A CERTAIN PLOT. ZTICK THE SUBROUTINE ZTICK WILL MARK ON THE PLOTS A TICK MARK TO SHOW THE ZERO VALUE FOR PERSPECTIVE. FORM: CALL ZTICK(LIM,NUM,I,B) WHERE: DIMENSION LIM(4) LIM(1) IS THE RIGHT SIDE COOR. LIM(2) IS THE LEFT SIDE COOR. LIM(3) IS THE TOP COOR. LIM(4) IS THE BOTTOM COOR. NUM IS THE TOTAL NUMBER OF PLOTTING REGIONS I IS THE REGION USED ON THE PLOT COUNTING DOWN DIMENSION B(2) B(1) IS THE LOWER SCALE LIMIT B(2) IS THE UPPER SCALE LIMIT IF THE TOP AND BOTTOM VALUES OF THE PLOT ARE NOT BOTH POSITIVE OR NEGATIVE A TICK MARK WILL MADE ON THE LEFT AND RIGHT SIDE OF THE REGION SPECIFIED TO MARK THE ZERO POINT.