C** RENUM ** PROGRAM TO RE-STATEMENT NUMBER FORTRAN PROGS C C INTEGER 1 YES,NO,BLANK LOGICAL*1 1 IFLNAM(30) LOGICAL*1 IPRINT,JPRINT,COUNT(120),DEBUG,NBLK LOGICAL*1 HEADER(82),NAME(6,120) LOGICAL*1 IFILE,FUNCR,FUNCX,JNAME(15),LOST COMMON ICOUNT,NUMBER(120,30),NAME,DEBUG,HEADER,COUNT,IPRINT, 1JPRINT,LOST DATA 1 YES,NO,BLANK/'Y','N',' '/ DATA NBLK/' '/ C C THIS PROGRAM IS INTENDED TO AID FORTRAN PROGRAM DOCUMENTATION C AND MAINTENANCE BY RE-STATEMENT NUMBERING C AS CREATED ON CARDS OR BY THE EDITOR. IT ASSUMES THE SOURCE C CODE IS VALID. THE LINE NUMBERS USED FOR REFERENCING VARIABLES C AGREE WITH THOSE ON A COMPILER-GENERATED LISTING. C C CAPACITY: 499 STATEMENT NUMBERS (RENUM ABORTS IF EXCEEDED), C 120 VARIABLE NAMES WITH UP TO 30 REFERENCES EACH (RENUM C IGNORES EXCESS REFERENCES AND ISSUES MESSAGE). C REDUCING VARIABLE CAPACITY FOR THE CROSS REFERENCE TABLE WILL C SIGNIFICANTLY REDUCE CORE NEEDED. C C V1M1, JUL 75 C ADDRESS PROBLEMS OR SUGGESTIONS TO: C DAVE SYKES C MEAD TECH LABS C (513) 426-3111 C C ARC MODIFICATIONS: C L.BECHTEL C 12-OCT-77 C C C IF THE FIRST LINE OF THE SOURCE CODE CONTAINS "C**" IN COL C 1-4, IT WILL BE PRINTED AS A HEADER ON EACH PAGE OF OUTPUT. C MULTIPLE SOURCE MODULES IN THE SAME INPUT FILE ARE NOT ALLOWED!! C THE USE OF FORTRAN KEYWORDS AS VARIABLE NAMES MAY CONFUSE THE C SCANS IN UNPREDICTABLE WAYS AND IS BEST AVOIDED. C PROGRAMS BEING RENUMBERED: C CANNOT HAVE STATEMENT NUMBERS WHICH EXTEND FROM THE END OF A C LINE ONTO A CONTINUATION LINE. C CAN HAVE STATEMENT NUMBERS ON CONTINUATION LINES ONLY IN C 'IF' AND 'GO TO' STATEMENTS, AND WHEN THEY FOLLOW A LOGICAL IF. C ANY DATA IN COL 73-80 WILL BE DELETED WHEN A PROGRAM IS RENUMBERE C THE FORTRAN KEYWORD AND CERTAIN SYNTAX ELEMENTS MUST BE C ON A SINGLE LINE (THE FIRST, EXCEPT PERHAPS AFTER A LOGICAL IF C THIS LIMITS UNREASONABLE USE OF INBEDDED BLANKS. C REASONABLY FORMATTED LINES WILL PRESENT NO PROBLEM. C IF A LINE EXTENDS PAST COL 72 BECAUSE THE NEW STATEMENT C NUMBERS ARE LONGER THEN THE OLD ONES, THE EXCESS IS MOVED TO C THE NEXT LINE (IF IT IS A CONTINUATION) OR A NEW C CONTINUATION LINE IS CREATED FOR IT. EXCEPT THAT END-OF-LINE C COMMENTS (!) ARE DELETED RATHER THEN MOVED. C STATEMENT NUMBERS UP TO 99999 ARE ALLOWED IN THE INPUT CODE, THE C OUTPUT STATEMENT NUMBERS WILL BE EVEN NUMBERS UP TO 998. C ONE ERROR MESSAGE IS POSSIBLE AND IS OUTPUT TO THE NEW SOURCE C FILE AS A COMMENT LINE: A POSSIBLE CONVERSION ERROR. IT HAPPENS C IF: (1) RENUM FINDS A STATEMENT NUMBER IN A STATEMENT THAT C IT DID NOT FIND AS A LABEL; OR (2) RENUM FINDS THE KEYWORD C OF A STATEMENT THAT SHOULD CONTAIN A STATEMENT NUMBER BUT C CANNOT FIND A NUMBER BECAUSE THE STATEMENT'S SYNTAX IS NOT AS C EXPECTED (EITHER THE KEYWORD WAS REALLY A VARIABLE NAME OR C THE STATEMENT IS NOT SYNTATICLY COMPLETE ON 1 LINE). C THE DEBUG OPTION MUST BE USED CAREFULLY SINCE IT IS EASY TO CAUSE C MULTIPLE STATEMENT NUMBERS WHICH CAUSE NO PROBLEM UNTIL C SOME LATER TIME WHEN THE FORTRAN COMPILER IS GIVEN A /D. CALL DATE (HEADER(74)) C DEBUG=.FALSE. C C--FILE NAME? C 6 WRITE(5,40) 40 FORMAT(' FILE NAME ? ',$) READ(5,47,END=90)IFLNAM 47 FORMAT(30A1) 41 FORMAT(A1) CALL ASSIGN(1,IFLNAM) C C--INCLUDE DEBUG LINES C 50 WRITE(5,43) 43 FORMAT(' INCLUDE DEBUG LINES ? [Y/N]:',$) READ(5,41,END=90)IRESP IF(IRESP.NE.YES.AND.IRESP.NE.NO.AND.IRESP.NE.BLANK)GO TO 50 IF (IRESP .EQ. YES) DEBUG=.TRUE. C CALL ASSIGN(2,IFLNAM) CALL RENUM1 REWIND 1 CALL RENUM2(IERROR) IF(IERROR.GT.0)WRITE(5,26) IERROR 26 FORMAT(' POSSIBLE ERRORS DETECTED:',I3) CALL CLOSE(2) CALL CLOSE(1) 90 STOP END