C
C Program 'CREMOVE' to remove comment lines from a Fortran code. C C Version: 5.20 C Date: 1997, October 11 C C Coded by: Ludek Klimes C Department of Geophysics, Charles University Prague, C Ke Karlovu 3, 121 16 Praha 2, Czech Republic, C http://sw3d.cz/staff/klimes.htm C C....................................................................... C C C Main input data file read from the * external unit: C One line containing character strings, read by means of the list C directed input (free format): C (1) 'FOLD','FNEW','FC',/ C 'FOLD'..Name of the input Fortran file. C 'FNEW'..Name of the output Fortran file without comment lines. C 'FC'... Name of the output Fortran file with comment lines only. C /... An obligatory slash for the sake of compatibility with C future extensions. C Default: 'FOLD'=' ', 'FNEW'=' ', 'FC'=' '. C C----------------------------------------------------------------------- C CHARACTER*80 FOLD,FNEW,FC CHARACTER*72 LINE INTEGER ILINE,IERR,I,J,K C WRITE(*,'(2A)') '+Enter 1 input and 1 or 2 output filenames: ' FOLD=' ' FNEW=' ' FC =' ' READ(*,*) FOLD,FNEW,FC C C Opening the input and output FORTRAN77 source code files: WRITE(*,'(2A)') '+Opening old (input) and new (output) files.', * ' ' OPEN(1,FILE=FOLD,STATUS='OLD',IOSTAT=IERR) IF(IERR.NE.0) THEN C CREMOVE-01 CALL ERROR('CREMOVE-01: Input file does not exist') C Input FORTRAN77 source file does not exist. END IF OPEN(2,FILE=FNEW) IF(FC.NE.' ') THEN OPEN(3,FILE=FC) END IF C C Loop for the lines in the input source file WRITE(*,'(2A)') '+Editting ',FNEW(1:70) ILINE=0 20 CONTINUE C C Reading a line: ILINE=ILINE+1 READ(1,'(A)',END=90) LINE C C Copying a line: DO 33 K=72,12,-12 IF(LINE(K-11:K).NE.' ') THEN DO 32 J=K,K-9,-3 IF(LINE(J-2:J).NE.' ') THEN DO 31 I=J,J-2,-1 IF(LINE(I:I).NE.' ') THEN IF(LINE(1:1).EQ.'C'.OR.LINE(1:1).EQ.'c') THEN IF(FC.NE.' ') THEN WRITE(3,'(A)') LINE(1:I) END IF ELSE WRITE(2,'(A)') LINE(1:I) END IF GO TO 20 END IF 31 CONTINUE END IF 32 CONTINUE END IF 33 CONTINUE C Empty line: WRITE(*,'(A,I5,2A)') * '+Warning: Empty line',ILINE,' in ',FOLD(1:56) WRITE(*,'(A)') ' ' C GO TO 20 C End of loop for the lines in the input source file C 90 CONTINUE WRITE(*,'(2A)') '+Done: ',FNEW(1:70) STOP END C C======================================================================= C INCLUDE 'error.for' C error.for C C======================================================================= C