CFILE=RATRSX.RAT C=================== RSX11-DEC VERSION OF RATFOR ======================== C THIS FILE CONTAINS THE COMPUTER/SYSTEM SPECIFIC PARTS OF RATFOR C VERSION 13-14, PCN#10, 21OCT77, ELIMINATE GOTO S YOU CAN'T GET TO C VERSION 14-15, 15 NOV 77, PCN #16, FIX PCN #10 C PCN # 17, CHANGE SYMBOL DECFOR TO DECF4P C PCN # 18, ADD /SP SPOOL SWITCH FOR RSX11M C VERSION 15-16, 10 DEC 77, PCN # 19, REMOVE /GO SWITCH C PCN # 21, ADD /COMPRESS SWITCH C PCN # 22, ADD LEVELS OF DEBUG TO /DE SWITCH C PCN # 23, CORRECT SENSE OF SWITCH TESTS SO /-XX WORKS RIGHT C PCN # 34, SET .FOR EXTENSION FOR FOR C PCN # 35, 22 JAN 78, REMOVE PCN #34 C PCN # 40, 18 NOV 78, FIX ,LP:=FOO/FO BUG C VERSION 16-17, 1 APR 79, CONVERT FOR RSX11/M C PCN # 46, REPLACE 'COMPAR' WITH 'SCOMPR' C PCN # 47, ELIMINATE RATLIB C PCN # 57, 31 AUG 79, ALWAYS PRINT ERRORS ON TI C PCN # 58, 31 AUG 79, ATTACH 'LISTOUT' TO MAKE CTRL/O USEFUL C PCN # 59, 31 AUG 79, IF /LC, CONVERT COMMENTS TO LOWER CASE. C PCN # 66, 6 OCT 79, FIX DEFLST C PCN # 67, 6 OCT 79, CORRECT MATH ERROR IN LOOKFR IF LASTP=0 C PCN # 68, 10 OCT, 79, ADDDEF, FIX BUG IF LASTP=1, OF READING NAMPTR(0) C PCN # 69, 10 OCT, 79, RATLST, MAKE STRPUT TYPE INTEGER C PCN # 71, 1 NOV 79, ADD /GO SWITCH TO START FORTRAN C C#DEFINE (DECF4P,) #DEFINE TO NUMBER FTN OUTPUT LIKE F4P C##DEFINE (OPENCLOSE,) #DEFINE TO ALLOW SPOOL OUTPUT TO PRINTER C##DEFINE (SPAWNIT,) #DEFINE IF RSX11M V3.2 FOR /GO SWITCH, ***PCN 71 !!! C CFILE=DEFIN.RAT ===== GENERAL CHARACTER SET DEFINITIONS =============== C C FILE=RATDEF.RAT CDEFINE (DECWRITER,) #DEFINED FOR DECWRITER OUTPUT C C BLOCK DATA - INITIALIZE GLOBAL VARIABLES C BLOCK DATA C C CFILE = CKEYWD.RAT FOR RATFOR.RAT C PCN #10, 21 OCT 77, ADD SSTOP AND SRETRN COMMON / CKEYWD / SDO, SIF, SELSE, SWHILE, SBREAK, SNEXT, SFOR, $SREPT, SUNTIL, SEND, SSTOP, SRETRN LOGICAL * 1 SDO ( 3 ), SIF ( 3 ), SELSE ( 5 ), SWHILE ( 6 ), $SBREAK ( 6 ), SNEXT ( 5 ), SFOR ( 4 ), SREPT ( 7 ), SUNTIL ( 6 ), $ SEND ( 4 ), SSTOP ( 5 ), SRETRN ( 7 ) C KEYWORDS: DATA SDO ( 1 ), SDO ( 2 ), SDO ( 3 ) / 68, 79, 0 / DATA SEND ( 1 ), SEND ( 2 ), SEND ( 3 ), SEND ( 4 ) / 69, 78, 68, $ 0 / DATA SIF ( 1 ), SIF ( 2 ), SIF ( 3 ) / 73, 70, 0 / DATA SELSE ( 1 ), SELSE ( 2 ), SELSE ( 3 ), SELSE ( 4 ), SELSE ( $5 ) / 69, 76, 83, 69, 0 / DATA SWHILE ( 1 ), SWHILE ( 2 ), SWHILE ( 3 ), SWHILE ( 4 ), $SWHILE ( 5 ), SWHILE ( 6 ) / 87, 72, 73, 76, 69, 0 / DATA SBREAK ( 1 ), SBREAK ( 2 ), SBREAK ( 3 ), SBREAK ( 4 ), $SBREAK ( 5 ), SBREAK ( 6 ) / 66, 82, 69, 65, 75, 0 / DATA SNEXT ( 1 ), SNEXT ( 2 ), SNEXT ( 3 ), SNEXT ( 4 ), SNEXT ( $5 ) / 78, 69, 88, 84, 0 / DATA SFOR ( 1 ), SFOR ( 2 ), SFOR ( 3 ), SFOR ( 4 ) / 70, 79, 82, $ 0 / DATA SREPT ( 1 ), SREPT ( 2 ), SREPT ( 3 ), SREPT ( 4 ), SREPT ( $5 ), SREPT ( 6 ), SREPT ( 7 ) / 82, 69, 80, 69, 65, 84, 0 / DATA SUNTIL ( 1 ), SUNTIL ( 2 ), SUNTIL ( 3 ), SUNTIL ( 4 ), $SUNTIL ( 5 ), SUNTIL ( 6 ) / 85, 78, 84, 73, 76, 0 / DATA SSTOP ( 1 ), SSTOP ( 2 ), SSTOP ( 3 ), SSTOP ( 4 ), SSTOP ( $5 ) / 83, 84, 79, 80, 0 / DATA SRETRN ( 1 ), SRETRN ( 2 ), SRETRN ( 3 ), SRETRN ( 4 ), $SRETRN ( 5 ), SRETRN ( 6 ), SRETRN ( 7 ) / 82, 69, 84, 85, 82, 78 $, 0 / C END C C DUMPIT - TO LIST GENERATED FORTRAN SOURCE CODE ON PRINTER CSYKES,28SEP76,27MAY77 C SUBROUTINE DUMPIT C INTEGER LEN, LINE, STRGET LOGICAL * 1 BUFR ( 91 ), FF ( 2 ) DATA FF / 12, 0 / C REWIND 7 CALL RATLST ( FF, 0 ) LINE = 0 20000 CONTINUE LEN = STRGET ( 7, BUFR, 90 ) IF(.NOT.( LEN .EQ. - 3 )) GOTO 20003 GOTO 20002 20003 CONTINUE IF(.NOT.( LEN .EQ. - 1 )) GOTO 20005 CALL ERROR ( 26HERROR READING OUTPUT FILE. ) GOTO 20006 20005 CONTINUE IF(.NOT.( BUFR ( 1 ) .EQ. 12 )) GOTO 20007 LINE = 0 20007 CONTINUE IF(.NOT.( BUFR ( 1 ) .EQ. 67 .OR. BUFR ( 6 ) .EQ. 36 .OR. BUFR ( $1 ) .EQ. 12 )) GOTO 20009 CALL RATLST ( BUFR, 0 ) GOTO 20010 20009 CONTINUE LINE = LINE + 1 CALL RATLST ( BUFR, LINE ) IF(.NOT.( ( BUFR ( 7 ) .EQ. 73 .AND. BUFR ( 8 ) .EQ. 70 .AND. $BUFR ( 9 ) .EQ. 32 ) .OR. ( BUFR ( 7 ) .EQ. 105 .AND. BUFR ( 8 ) $ .EQ. 102 .AND. BUFR ( 9 ) .EQ. 32 ) )) GOTO 20011 LINE = LINE + 1 20011 CONTINUE 20010 CONTINUE 20006 CONTINUE 20004 CONTINUE C 20001 GOTO 20000 20002 CONTINUE RETURN END C C ERROR - PRINT FATAL ERROR MESSAGE, THEN DIE CSYKES 28 SEP 76 C SUBROUTINE ERROR ( BUF ) C LOGICAL * 1 BUF ( 1 ) C CALL SYNERR ( BUF ) CALL SYNERR ( 10H**ABORT**. ) CALL EXIT END C C GETLIN - TO READ IN ANOTHER LINE FROM THE INPUT FILE FOR NGETCH C PCN # 22, 10 DEC 77, ADD DEBUG LEVELS C PCN # 59, 31 AUG 79, IF /LC, CONVERT COMMENTS TO LOWER CASE. C# SYKES, DEC 76,27MAY77 C# IF LINE BEGINS WITH A '%' IN COL. 1, TRANSFER IT TO THE C# OUTPUT FILE WITH NO PROCESSING AT ALL EXCEPT DELETE THE '%'. C# ALSO, TRANSFER FULL LINE COMMENTS ('#' IN COL 1) TO OUTPUT FILE C# ALSO, LIST EACH LINE AS IT IS READ.EXCEPT WITHIN UNDEFINED IFDEFS C IF THE /IF SWITCH IS PRESENT. C INTERPRET DEBUG LINES ("?" IN COL 1) AS WELL. PROCESS THEM IF C THE LEVEL SPECIFIED IN THE SECOND COL IS >= SPECIFIED DEBUG LEVEL. C LOGICAL FUNCTION GETLIN * 1 ( BUFR, F ) C INTEGER I, F, STRGET, STRIM, LEN, INDEX LOGICAL * 1 BUFR ( 91 ) C CFILE = CLINE.RAT FOR RATFOR.RAT COMMON / CLINE / LEVEL, INFILE ( 4 ), LINECT, INIF INTEGER LEVEL INTEGER INFILE INTEGER LINECT INTEGER INIF C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG C CFILE= CUCLC.RAT FOR RATFOR C ***PCN # 22, 10 DEC 77 COMMON / CUCLC / LC, COMPRS INTEGER LC INTEGER COMPRS LOGICAL * 1 DLEVL (11) C DATA DLEVL/1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1H ,0/ CALL ERRSNS GETLIN = 1 20013 CONTINUE LEN = STRGET ( F, BUFR, 90 ) IF(.NOT.( LEN .EQ. - 3 )) GOTO 20016 GETLIN = - 3 GOTO 20015 20016 CONTINUE IF(.NOT.( LEN .EQ. - 1 )) GOTO 20018 CALL ERRSNS ( I ) IF(.NOT.( I .EQ. 39 )) GOTO 20020 CALL ERROR ( 25HERROR READING INPUT FILE. ) GOTO 20021 20020 CONTINUE CALL ERROR ( 27HOPEN FAILURE ON INPUT FILE. ) 20021 CONTINUE C ELSE 20018 CONTINUE 20017 CONTINUE LEN = STRIM ( BUFR ) C C#PRINT THE NEW LINE C IF(.NOT.( INIF .EQ. 0 .OR. IFPNT .EQ. 1 )) GOTO 20022 I = INDEX ( BUFR, 35 ) IF(.NOT.( I .GT. 0 .AND. LC .EQ. 1 )) GOTO 20024 CALL FOLD ( BUFR ( I + 1 ) ) 20024 CONTINUE IF(.NOT.( ( BUFR ( 1 ) .EQ. 35 ) .OR. ( INIF .EQ. 1 ) .OR. ( $BUFR ( 1 ) .EQ. 63 .AND. INDEX ( DLEVL, BUFR ( 2 ) ) .LT. DEBUG ) $ )) GOTO 20026 CALL RATLST ( BUFR, 0 ) GOTO 20027 20026 CONTINUE CALL RATLST ( BUFR, LINECT ) LINECT = LINECT + 1 20027 CONTINUE C C#SPECIAL PROCESSING OF RATFOR PROCESSOR FEATURES C 20022 CONTINUE IF(.NOT.( BUFR ( 1 ) .EQ. 63 )) GOTO 20028 IF(.NOT.( INDEX ( DLEVL, BUFR ( 2 ) ) .GE. DEBUG )) GOTO 20030 BUFR ( 1 ) = 32 BUFR ( 2 ) = 32 GOTO 20031 20030 CONTINUE GOTO 20014 C 20031 CONTINUE 20028 CONTINUE IF(.NOT.( LEN .EQ. 1 .AND. BUFR ( 1 ) .EQ. 12 )) GOTO 20032 GOTO 20014 20032 CONTINUE IF(.NOT.( BUFR ( 1 ) .NE. 37 .AND. BUFR ( 1 ) .NE. 35 )) GOTO $20034 GOTO 20015 C 20034 CONTINUE 20033 CONTINUE IF(.NOT.( INIF .EQ. 1 )) GOTO 20036 GOTO 20014 20036 CONTINUE IF(.NOT.( BUFR ( 1 ) .EQ. 37 )) GOTO 20038 CALL PUTLIN ( BUFR ( 2 ), 7 ) GOTO 20039 20038 CONTINUE IF(.NOT.( COMPRS .EQ. 0 )) GOTO 20040 BUFR ( 1 ) = 67 CALL PUTLIN ( BUFR, 7 ) 20040 CONTINUE 20039 CONTINUE 20037 CONTINUE C 20014 GOTO 20013 20015 CONTINUE RETURN END C C OPENI - TO OPEN INCLUDED FILES FOR RATFOR CSYKES,24APR77, ALLOW /NL TO SUPPRESS LISTING OF INCLUDED FILES CSYKES,19NOV76,27MAY77 C THE LUN FOR EACH INPUT FILE IS STORED IN INFILE(LEVEL),WHERE C LEVEL IS THE INCLUSION LEVEL (BASIC INPUT FILE=1). C CURRENTLY, THE LUN=THE INCLUSION LEVEL; INFILE(LEVEL)=LEVEL. CNOTE: AN EXPLICIT VERSION NUMBER WORKS ONLY IF THERE IS ALSO AN C EXPLICIT EXTENSION SPECIFIED. C INTEGER FUNCTION OPENI C LOGICAL * 1 BUFR ( 35 ) LOGICAL * 1 NGETCH, CHAR INTEGER LEN, I, INDEX, SJOIN, JUNK, SKIP, STRGET C CFILE = CLINE.RAT FOR RATFOR.RAT COMMON / CLINE / LEVEL, INFILE ( 4 ), LINECT, INIF INTEGER LEVEL INTEGER INFILE INTEGER LINECT INTEGER INIF C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG LOGICAL * 1 RAT (5) C DATA RAT/1H.,1HR,1HA,1HT,0/ OPENI = LEVEL + 1 LST ( LEVEL + 1 ) = 1 LEN = 0 SKIP = 0 C CSINCE THE STRING MAY CONTAIN SEVERAL TOKENS C AND EVEN SEMICOLONS, FORCE READ THE REST OF THIS LINE AND C TAKE IT TO BE THE FILE NAME SPEC. C 20042 IF(.NOT.( NGETCH ( CHAR, INFILE ( LEVEL ) ) .NE. 10 .AND. CHAR $.NE. 35 .AND. LEN .LT. 35 )) GOTO 20043 IF(.NOT.( SKIP .EQ. 1 .AND. CHAR .EQ. 32 )) GOTO 20044 SKIP = 0 GOTO 20045 20044 CONTINUE IF(.NOT.( CHAR .EQ. 47 )) GOTO 20046 SKIP = 1 LST ( LEVEL + 1 ) = 0 GOTO 20047 20046 CONTINUE IF(.NOT.( CHAR .NE. 32 .AND. CHAR .NE. 9 .AND. SKIP .EQ. 0 )) $GOTO 20048 LEN = LEN + 1 BUFR ( LEN ) = CHAR 20048 CONTINUE 20047 CONTINUE 20045 CONTINUE GOTO 20042 20043 CONTINUE CALL PUTBAK ( CHAR ) C BUFR ( LEN + 1 ) = 0 C IF(.NOT.( INDEX ( BUFR, 46 ) .EQ. 0 )) GOTO 20050 LEN = SJOIN ( BUFR, RAT, 35 - 1, JUNK ) C 20050 CONTINUE CALL ERRSNS CALL ASSIGN ( OPENI, BUFR, LEN ) CALL FDBSET ( OPENI, 8HREADONLY, 5HSHARE ) CALL ERRSNS ( I ) IF(.NOT.( I .EQ. 43 )) GOTO 20052 CALL SYNERR ( 18HBAD FILENAME SPEC. ) OPENI = - 1 GOTO 20053 20052 CONTINUE READ ( OPENI, 1, ERR = 2, END = 2 ) 1 FORMAT ( A1 ) REWIND OPENI 20053 CONTINUE RETURN C 2 OPENI = - 1 RETURN END C C PUTLIN - WRITE A LINE OF FORTRAN CODE TO OUTPUT FILE CSYKES,14OCT76,16DEC76,27MAY77 C SUBROUTINE PUTLIN ( B, F ) C INTEGER I, J, F LOGICAL * 1 B ( 91 ) C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG C C C ONLY IF WE ARE OUTPUTTING FORTRAN CODE: IF(.NOT.( OUTPUT .EQ. 1 )) GOTO 20054 CONTINUE I = 1 20056 IF(.NOT.( I .LE. 90 .AND. B ( I ) .NE. 10 .AND. B ( I ) .NE. 0)) $GOTO 20058 20057 I = I + 1 GOTO 20056 20058 CONTINUE B ( I ) = 0 I = I - 1 IF(.NOT.( I .LE. 0 )) GOTO 20059 WRITE ( F, 1, ERR = 14, END = 14 ) GOTO 20060 20059 CONTINUE WRITE ( F, 1, ERR = 14, END = 14 ) ( B ( J ), J = 1, I ) 20060 CONTINUE 1 FORMAT ( 90 A1 ) 20054 CONTINUE RETURN C 14 CALL ERROR ( 26HERROR WRITING OUTPUT FILE. ) END C C RATFOR - PREPROCESSOR MAINLINE AND OPERATOR/OS INTERFACE CSYKES 22 NOV 76 C PCN # 17, 15 NOV 77, CHANGE DECFOR TO DECF4P, ADD RUN ...FOR C PCN # 18, 15 NOV 77, ADD /SP SWITCH C PCN# 19, 21, 22, 23, 10 DEC 77, AFFECT SWITCHES C PCN # 34, ADD .FOR DEFAULT EXTENSION C PCN # 35, 22 JAN 78, REMOVE .FOR DEFAULT EXTENSION C PCN #40, 18 JAN 78, FIX ,LP:=FOO/FO BUG C PCN # 58, 31 AUG 79, ATTACH 'LISTOUT' TO MAKE CTRL/O USEFUL C PCN # 71, 1 DEC 79, ADD /GO, IF SPAWN DIRECTIVE IS AVAILABLE C INTEGER SWITCH ( 4, 11 ), ICSI, DOIT, I, J, STATUS, SLEN, JUNK INTEGER STRPUT, SITOC LOGICAL * 1 NAMES ( 35, 9 ) REAL DEFALT ( 4 ), PROMPT C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG C CFILE = CICSI.RAT FOR ICSI COMMON / CICSI / INPUT, INDLUN, USER, IFIRST, MCR, CLB ( 81 ) INTEGER INPUT INTEGER INDLUN INTEGER USER INTEGER IFIRST INTEGER MCR LOGICAL * 1 CLB C CFILE= CUCLC.RAT FOR RATFOR C ***PCN # 22, 10 DEC 77 COMMON / CUCLC / LC, COMPRS INTEGER LC INTEGER COMPRS C LOGICAL * 1 REF (24) DATA REF/1H ,1H ,1H ,1H ,1HR,1HA,1HT,1HF,1HO,1HR,1H ,1HE,1HR,1HR, $1HO,1HR,1HS,1H ,1HF,1HO,1HU,1HN,1HD,0/ DATA DEFALT / 4HFTN , 4HLST , 4HOBJ , 4HRAT / DATA PROMPT / 4HRAT> / DATA IFIRST / 1 / C DATA SWITCH ( 1, 1 ) / 2HRE / DATA SWITCH ( 1, 2 ) / 2HCO / DATA SWITCH ( 1, 3 ) / 2HFO / DATA SWITCH ( 1, 4 ) / 2HSC / DATA SWITCH ( 1, 5 ) / 2HLC / DATA SWITCH ( 1, 6 ) / 2HHE / DATA SWITCH ( 1, 7 ) / 2HDE / DATA SWITCH ( 1, 8 ) / 2HVE / DATA SWITCH ( 1, 9 ) / 2HIF / DATA SWITCH ( 1, 10 ) / 2HSP / DATA SWITCH ( 1, 11 ) / 2HGO / C CALL ERRSET ( 63, . TRUE ., . FALSE .,, . FALSE . ) CALL ERRSET ( 43, . TRUE ., . FALSE .,, . FALSE . ) CALL ERRSET ( 29, . TRUE ., . FALSE .,, . FALSE . ) CALL ERRSET ( 39, . TRUE ., . FALSE .,, . FALSE . ) CALL ERRSET ( 30, . TRUE ., . FALSE .,, . FALSE . ) C C USER = 5 INDLUN = 8 20061 CONTINUE CLB ( 1 ) = 0 STATUS = ICSI ( NAMES, DEFALT, SWITCH, 11, PROMPT ) IF(.NOT.( STATUS .EQ. - 3 )) GOTO 20064 CALL EXIT GOTO 20065 20064 CONTINUE IF(.NOT.( STATUS .EQ. 1 )) GOTO 20066 IF(.NOT.( SWITCH ( 2, 6 ) .GT. 0 )) GOTO 20068 CALL RATHLP GOTO 20069 20068 CONTINUE IF(.NOT.( SWITCH ( 2, 8 ) .GT. 0 )) GOTO 20070 JUNK = STRPUT ( 5, 15HRATFOR RSX/V 18 ) GOTO 20071 20070 CONTINUE IF(.NOT.( SWITCH ( 2, 2 ) .LE. 0 )) GOTO 20072 COMPRS = 0 GOTO 20073 20072 CONTINUE COMPRS = 1 20073 CONTINUE IF(.NOT.( SWITCH ( 2, 5 ) .LE. 0 )) GOTO 20074 LC = 0 GOTO 20075 20074 CONTINUE LC = 1 20075 CONTINUE IF(.NOT.( SWITCH ( 2, 1 ) .LE. 0 )) GOTO 20076 DOIT = 1 GOTO 20077 20076 CONTINUE DOIT = 0 20077 CONTINUE IF(.NOT.( SWITCH ( 2, 9 ) .LE. 0 )) GOTO 20078 IFPNT = 1 GOTO 20079 20078 CONTINUE IFPNT = 0 20079 CONTINUE IF(.NOT.( SWITCH ( 2, 7 ) .LE. 0 )) GOTO 20080 DEBUG = 9999 GOTO 20081 20080 CONTINUE IF(.NOT.( SWITCH ( 2, 7 ) .EQ. 2 )) GOTO 20082 DEBUG = SWITCH ( 4, 7 ) GOTO 20083 20082 CONTINUE DEBUG = 1 C 20083 CONTINUE 20081 CONTINUE CALL ERRSNS IF(.NOT.( SLEN ( NAMES ( 1, 1 ) ) .GT. 0 )) GOTO 20084 OUTPUT = 1 CALL ASSIGN ( 7, NAMES ( 1, 1 ), 0 ) CALL FDBSET ( 7, 3HNEW,, 2 ) CALL ERRSNS ( I ) IF(.NOT.( I .NE. 0 )) GOTO 20086 CALL ICSIE ( 21HBAD OUTPUT FILE SPEC! ) GOTO 20062 20086 CONTINUE IF(.NOT.( STRPUT ( 7, 1H ) .NE. 1 )) GOTO 20088 CALL ICSIE ( 25HOPEN FAIL FOR OUTPUT FILE ) GOTO 20062 20088 CONTINUE REWIND 7 20089 CONTINUE 20087 CONTINUE GOTO 20085 20084 CONTINUE OUTPUT = 0 C 20085 CONTINUE IF(.NOT.( SLEN ( NAMES ( 1, 2 ) ) .GT. 0 )) GOTO 20090 LST ( 1 ) = 1 CALL ASSIGN ( 6, NAMES ( 1, 2 ), 0 ) CALL FDBSET ( 6, 3HNEW,, 2 ) CALL ERRSNS ( I ) IF(.NOT.( I .NE. 0 )) GOTO 20092 CALL ICSIE ( 19HBAD LIST FILE SPEC! ) GOTO 20062 20092 CONTINUE IF(.NOT.( STRPUT ( 6, 1H ) .NE. 1 )) GOTO 20094 CALL ICSIE ( 23HOPEN FAIL FOR LIST FILE ) GOTO 20062 20094 CONTINUE REWIND 6 CALL QIO ( 768, 6 ) 20095 CONTINUE 20093 CONTINUE GOTO 20091 20090 CONTINUE LST ( 1 ) = 0 20091 CONTINUE IF(.NOT.( LST ( 1 ) .EQ. 0 .AND. OUTPUT .EQ. 0 )) GOTO 20096 GOTO 20062 C 20096 CONTINUE CALL RATGO ( DOIT ) CONTINUE J = 4 20098 IF(.NOT.( J .LE. 9 .AND. SLEN ( NAMES ( 1, J ) ) .GT. 0)) GOTO $20100 CALL ERRSNS CALL ASSIGN ( 1, NAMES ( 1, J ), 0 ) CALL FDBSET ( 1, 8HREADONLY, 5HSHARE ) CALL ERRSNS ( I ) IF(.NOT.( I .NE. 0 )) GOTO 20101 CALL ICSIE ( 20HBAD INPUT FILE SPEC! ) GOTO 20100 20101 CONTINUE CALL PARSE CALL CLOSE ( 1 ) C 20099 J = J + 1 GOTO 20098 20100 CONTINUE IF(.NOT.( SWITCH ( 2, 4 ) .GT. 0 .AND. LST ( 1 ) .EQ. 1 )) GOTO $20103 CALL DEFLST 20103 CONTINUE IF(.NOT.( SWITCH ( 2, 3 ) .GT. 0 .AND. OUTPUT .EQ. 1 .AND. LST ( $1 ) .EQ. 1 )) GOTO 20105 CALL DUMPIT 20105 CONTINUE IF(.NOT.( OUTPUT .EQ. 1 )) GOTO 20107 CALL CLOSE ( 7 ) C 20107 CONTINUE IF(.NOT.( LST ( 1 ) .EQ. 1 )) GOTO 20109 CALL CLOSE ( 6 ) 20109 CONTINUE IF(.NOT.( ERRORS .GT. 0 )) GOTO 20111 I = SITOC ( ERRORS, REF ( 1 ), 3 ) REF ( I + 1 ) = 32 CALL ICSIE ( REF ) 20111 CONTINUE 20071 CONTINUE 20069 CONTINUE 20066 CONTINUE 20065 CONTINUE C 20062 GOTO 20061 20063 CONTINUE END C C RATHLP - TO PRINT HELP ON THE TERMINAL FOR THE USER C ***PCN#19, 21, 22, 10 DEC 77 C ***PCN # 34, 16 JAN 78 C ***PCN # 35, 22 JAN 78 C ***PCN # 71, DEC 79, ADD /GO C SUBROUTINE RATHLP C WRITE ( 5, 1 ) 1 FORMAT ( / 1H , 15HRATFOR RSX/V 18 / /, $35H SWITCHS: (ALL DEFAULTS ARE NO) /, $60H /DE:N-PROCESS DEBUG LINES WITH LEVEL >= N ('?N' IN COL 1&2) / $, 55H /CO - SUPPRESS BLANKS BETWEEN TOKENS IN FORTRAN OUTPUT /, $31H /FO - LIST OUTPUT FORTRAN CODE /, $27H /HE - GET THIS HELP (ONLY) ) WRITE ( 5, 4 ) 4 FORMAT ( 45H /IF - SUPRESS LISTING UNDEFINED CONDITIONALS /, $39H /LC - GENERATE LOWER CASE FORTRAN CODE /, $56H /RE - RETAIN THE DEFINITIONS FROM PREVIOUS COMMAND LINE /, $46H /SC - LIST SYMBOLIC CONSTANT DEFINITION TABLE /, $36H /SP - SPOOL LISTING FILE TO PRINTER /, $55H /VE - PRINT RATFOR'S VERSION NUMBER ON TERMINAL (ONLY) / ) C WRITE ( 5, 2 ) 2 FORMAT ( 53H COMMAND LINE: (SINGLE LEVEL INDIRECT FILES ALLOWED) $ /, 47H [OUTPUT][,LIST][,OBJ]=IN1[,IN2...,IN6][/SW...] /, $52H IF NO OUTPUT FILES ARE SPECIFIED, DEFAULT FILES ARE /, $60H ARE CREATED WITH SAME DEV, UIC, & NAME AS FIRST INPUT FILE. / $ ) C WRITE ( 5, 3 ) 3 FORMAT ( 26H DEFAULT FILE EXTENSIONS: /, $36H OUTPUT =FTN LIST =LST OBJECT =OBJ /, $24H INPUT =RAT COMMAND=CMD / ) C RETURN END C C RATLST - TO LIST RATFOR SOURCE CODE ON PRINTER CSYKES 28MAY77 C PCN # 69, 10 OCT 79, MAKE STRPUT TYPE INTEGER C SUBROUTINE RATLST ( BUFR, LINE ) C INTEGER N, LINE, SCOPY, SITOC, JUNK, STRPUT LOGICAL * 1 BUFR ( 1 ), OUTBUF ( 133 ) C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG C CFILE = CLINE.RAT FOR RATFOR.RAT COMMON / CLINE / LEVEL, INFILE ( 4 ), LINECT, INIF INTEGER LEVEL INTEGER INFILE INTEGER LINECT INTEGER INIF C CFILE = CICSI.RAT FOR ICSI COMMON / CICSI / INPUT, INDLUN, USER, IFIRST, MCR, CLB ( 81 ) INTEGER INPUT INTEGER INDLUN INTEGER USER INTEGER IFIRST INTEGER MCR LOGICAL * 1 CLB LOGICAL * 1 STARSS (7) C C ERRORS WITHIN INCLUDED/NL FILES ARE LISTED, C EXCEPT FROM SYNERR (LINE=HUGE). DATA STARSS/1H*,1H*,1H*,1H*,1H*,1H*,0/ N = 1 20113 IF(.NOT.( N .LE. LEVEL)) GOTO 20115 IF(.NOT.( LST ( N ) .EQ. 0 .AND. LINE .LE. 9999 )) GOTO 20116 RETURN C 20116 CONTINUE 20114 N = N + 1 GOTO 20113 20115 CONTINUE IF(.NOT.( PLINE .GT. 55 .OR. BUFR ( 1 ) .EQ. 12 )) GOTO 20118 OUTBUF ( 1 ) = 12 OUTBUF ( 2 ) = 0 JUNK = STRPUT ( 6, OUTBUF ) OUTBUF ( 1 ) = 32 JUNK = STRPUT ( 6, OUTBUF ) JUNK = STRPUT ( 6, OUTBUF ) JUNK = STRPUT ( 6, OUTBUF ) JUNK = STRPUT ( 6, OUTBUF ) PAGE = PAGE + 1 CALL SPAD ( OUTBUF, 75 ) CALL SINSRT ( 15HRATFOR RSX/V 18, OUTBUF ( 1 ) ) CALL DATE ( OUTBUF ( 35 ) ) CALL TIME ( OUTBUF ( 47 ) ) CALL SINSRT ( 4HPAGE, OUTBUF ( 69 ) ) JUNK = SITOC ( PAGE, OUTBUF ( 75 ), 5 ) JUNK = STRPUT ( 6, OUTBUF ) JUNK = STRPUT ( 6, CLB ) OUTBUF ( 1 ) = 32 OUTBUF ( 2 ) = 0 JUNK = STRPUT ( 6, OUTBUF ) JUNK = STRPUT ( 6, OUTBUF ) PLINE = 6 IF(.NOT.( BUFR ( 1 ) .EQ. 12 )) GOTO 20120 RETURN 20120 CONTINUE 20118 CONTINUE OUTBUF ( 1 ) = 0 IF(.NOT.( LINE .GT. 0 )) GOTO 20122 IF(.NOT.( LINE .GT. 9999 )) GOTO 20124 JUNK = SCOPY ( STARSS, OUTBUF ( 1 ), 15, JUNK ) GOTO 20125 20124 CONTINUE JUNK = SITOC ( LINE, OUTBUF ( 1 ), 5 ) 20125 CONTINUE 20122 CONTINUE CALL SPAD ( OUTBUF, 15 ) N = 1 20126 IF(.NOT.( N .LE. 4)) GOTO 20128 IF(.NOT.( N .LE. LEVEL - 1 )) GOTO 20129 OUTBUF ( 5 + N ) = 42 20129 CONTINUE 20127 N = N + 1 GOTO 20126 20128 CONTINUE JUNK = SCOPY ( BUFR, OUTBUF ( 8 + 4 ), 132 - 8 - 4, JUNK ) JUNK = STRPUT ( 6, OUTBUF ) PLINE = PLINE + 1 C RETURN END C C C SYNERR - REPORT RATFOR SYNTAX ERROR CSYKES 28SEP76,20MAY77 C PCN # 57, 31 AUG 79, ALWAYS PRINT ERRORS ON TERMINAL C SUBROUTINE SYNERR ( MSG ) C LOGICAL * 1 BUFOUT ( 91 ), MSG ( 91 ) INTEGER I, LASTC, STRPUT EQUIVALENCE ( BUFOUT, HEADER ) C CFILE= COUTLN.RAT FOR RATFOR.RAT COMMON / COUTLN / OUTP, OUTBUF ( 91 ) INTEGER OUTP LOGICAL * 1 OUTBUF C CFILE = CLIST. RAT FOR RATFOR.RAT ; SYKES,26SEP76 COMMON / CLIST / LST ( 4 ), PLINE, PAGE, OUTPUT, ERRORS, IFPNT, $DEBUG INTEGER LST INTEGER PLINE INTEGER PAGE INTEGER ERRORS INTEGER OUTPUT INTEGER IFPNT INTEGER DEBUG LOGICAL * 1 HEADER (19) C DATA HEADER/1HC,1H*,1H*,1H*,1HR,1HA,1HT,1HF,1HO,1HR,1H ,1HE,1HR,1 $HR,1HO,1HR,1H:,1H ,0/ LASTC = 19 I = 1 20131 IF(.NOT.( MSG ( I ) .NE. 0 .AND. MSG ( I ) .NE. 46 .AND. LASTC $.LT. 90)) GOTO 20133 BUFOUT ( LASTC ) = MSG ( I ) LASTC = LASTC + 1 20132 I = I + 1 GOTO 20131 20133 CONTINUE BUFOUT ( LASTC ) = 0 ERRORS = ERRORS + 1 C OUTPUT TO STANDARD FILE IF(.NOT.( OUTP .GT. 0 )) GOTO 20134 CALL OUTDON 20134 CONTINUE CALL PUTLIN ( BUFOUT, 7 ) C C OUTPUT TO LISTING FILE, OR TO TERMINAL, IF NOT LISTING IF(.NOT.( LST ( 1 ) .EQ. 1 )) GOTO 20136 CALL RATLST ( BUFOUT ( 2 ), 32767 ) C ELSE #PCN # 57 20136 CONTINUE CALL ICSIE ( BUFOUT ( 2 ) ) C RETURN END