C SUBROUTINE FLOPEN.FOR C THIS SUBROUTINE READS IN A FILE NAME AFTER PRINTING A C STRING MESSAGE SPECIFIED IN THE CALL, AND PERFORMS AN C ASSIGN TO A LUN ALSO SPECIFIED IN THE CALL. THE STATUS C IS RETURNED WITH IST = 1 INDICATING SUCCESS AND IST = 2 C INDICATING FAILURE VIA EOF ON INPUT C RE-ENTERED 5-MARCH-75 AUTHOR: LARRY SIMPSON C MODIFIED FOR "FOR" COMPILER 15-AUG-75 C --------- C MODIFIED TO CHECK ON EXISTENCE OF A FILE OPENED FOR READ VIA A C DUMMY READ STATEMENT. POSITIVE LUN INDICATES READ, NEGATIVE C INDICATES WRITE. NO CHECK IS PERFORMED FOR WRITE. C FILE NAME AND LENGTH ARE NOW SAVED IN A COMMON AREA C ACCESSIBLE BY THE MAIN PROGRAM. C MODIFIED 29-JAN-76: LARRY SIMPSON ; SUBROUTINE STRCMP ; TO COMPARE TWO STRINGS AND REPORT EQUALITY OR NOT. ; FORTRAN CALL: ; CALL STRCMP(STRING1,STRING2,NCH,IRSLT) ; WHERE STRING1=FIRST STRING (USUALLY ARRAY) ; STRING2=SECOND STRING ; NCH=NUMBER OF CHARACTERS TO COMPARE ; IRSLT=STATUS: 0 -> EQUALITY ; > 0 -> POSITION IN STRINGS AT WHICH = FAILED ; SUBROUTINE MOCNVT ; TO CONVERT MONTHS FROM NUMBER TO ASCII AND VICE VERSA ; FORTRAN CALL: ; CALL MOCNVT(NUM,MONTH,MODE,ISTAT) ; WHERE: ; NUM = NUMBER OF MONTH (1-12) ; MONTH = 3 CHAR ASCII MONTH NAME ; MODE: ; 1 = NUM > ASCII ; 2 = ASCII > NUM ; ISTAT: STATUS RETURN ; 1 = OK ; 2 = INVALID PARAM FOR CONVERSION ; 3 = INVALID MODE .TITLE MOCNVT ; SUBROUTINE STRCON ; STRING CONCATENATION ROUTINE ; TO TAKE A VARIABLE NUMBER OF STRINGS AND CONCATENATE THEM ; INTO ONE STRING. ; FORTRAN CALL: ; CALL STRCON(LENA,LEN,STR,LEN1,STR1[,LEN2,STR2,...]) ; WHERE: ; LENA = ACTUAL LENGTH OF CONCATENATED STRING ; + INDICATES SUCCESSFUL CONCATENATION ; 0 INDICATES ERROR IN CALL ; - INDICATES OVERFLOW, VALUE = LEN ; LEN = MAX. LENGTH OF OUTPUT STRING ; STR = START OF OUTPUT STRING ; LEN1 = LENGTH OF FIRST INPUT STRING ; STR1 = START OF FIRST STRING ; ETC. ; SUBROUTINE AMAXFA.MAC ; SUBROUTINE TO FIND THE MAXIMUM OF A ; SERIES OF REAL*4'S WHOSE STARTING ADDRESS ; AND COUNT ARE GIVEN IN THE CALL. ; FORTRAN CALL: ; CALL AMAXFA(FARR,ICNT,FMAX,IOFF) ; WHERE FARR=STARTING ADDRESS(USUALLY ARRAY NAME) ; ICNT=COUNT OF REALS TO COMPARE(>1) ; IOFF=OFFSET OF MAX VALUE (ARRAY POSITION) ; FMAX=MAX VALUE ; SUBROUTINE CHRCNT ; TO COUNT THE NUMBER OF OCCURRENCES OF A GIVEN ; CHARACTER IN A BUFFER OF SPECIFIED LENGTH ; FORTRAN CALL: ; CALL CHRCNT(NBUF,CBUF,NCHR,CHAR) ; WHERE: ; NBUF=NO. OF CHARACTERS IN BUFFER ; CBUF=START OF CHAR BUFFER ; NCHR=NO. OF SPECIFIED CHAR COUNTED ; CHAR=SPECIFIED CHARACTER (BYTE VAR) ; SUBROUTINE FLINTP.MAC ; FLOATING POINT INTERPOLATION FUNCTION ; IF Y = F(X) AND FOR X1 AND X2 A CORRESPONDING ; Y1 AND Y2 ARE KNOWN, THEN GIVEN X0 BETWEEN ; X1 AND X2, Y0 WILL BE CALCULATED BY ; LINEAR INTERPOLATION. ; FORTRAN CALL: ; Y0 = FLINTP(X1,X2,Y1,Y2,X0) ; ; ; SUBROUTINE LNFILL.MAC ; TO FILL IN BLANKS IN A FORTRAN ARRAY. ; A STARTING ADDRESS, LENGTH AND (OPTIONALLY) A CHARACTER ARE SPECIFIED. ; FORTRAN CALL: ; CALL LNFILL(LEN,ARRAY[,CHAR]) ; WHERE: ; LEN=NO. OF BLANKS TO FILL IN ; ARRAY=NAME OF FIRST POSITION TO FILL ; FIRST BYTE OF CHAR=ASCII CHARACTER TO FILL (DEFAULT=BLANK) .TITLE LNFILL ; SUBROUTINE TRNCAT.MAC ; FORTRAN CALLABLE ROUTINE TO TRUNCATE ; TRAILING BLANKS FROM AN ASCII ARRAY. ; FORTRAN CALL: ; CALL TRNCAT(LIN,NLIN,NONBLK) ; WHERE: ; LIN = START OF ARRAY ; NLIN = NO. OF CHAR IN LINE ; NONBLK = NO. OF CHAR IN LINE AFTER BLANK TRUNCATION