home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-05-14 | 47.2 KB | 1,284 lines |
- Newsgroups: comp.sources.misc
- organization: CERN, Geneva, Switzerland
- keywords: fortran
- subject: v12i092: Floppy - Fortran Coding Convention Checker Part 06/11
- from: julian@cernvax.cern.ch (julian bunn)
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 12, Issue 92
- Submitted-by: julian@cernvax.cern.ch (julian bunn)
- Archive-name: ffccc/part06
-
- #!/bin/sh
- echo 'Start of Floppy, part 06 of 11:'
- echo 'x - COMRUL.f'
- sed 's/^X//' > COMRUL.f << '/'
- X SUBROUTINE COMRUL
- X include 'CHECKS.h'
- X CCHECK(1) ='Avoid comment lines after end of program unit'
- X CCHECK(2) ='End all program program units with the END statement'
- X CCHECK(3) =
- X & 'Declared COMMON blocks must be used in the program unit'
- X CCHECK(4) ='COMPLEX and DOUBLEPRECISION vars at end of COMMON'
- X CCHECK(5) ='COMMON block definitions should not change'
- X CCHECK(6) ='Variable names should be 6 or fewer characters long'
- X CCHECK(7) ='Variables in COMMON should be 6 characters long'
- X CCHECK(8) ='Variables not in COMMON should be <6 characters'
- X CCHECK(9) ='Integer variables should begin with I to N'
- X CCHECK(10)='Variable names should not equal FORTRAN keywords'
- X CCHECK(11)='Avoid comment lines before header line'
- X CCHECK(12)=
- X &'Program unit names should not equal intrinsic function names'
- X CCHECK(13)=
- X &'First statement in a program unit should be header line'
- X CCHECK(14)=
- X &'Program unit should begin with at least 3 comment lines'
- X CCHECK(15)='Comment lines should begin with a C'
- X CCHECK(16)='No comment lines between continuations'
- X CCHECK(17)='Avoid non-standard variable types eg INTEGER*2'
- X CCHECK(18)='Avoid multiple COMMON definitions per line'
- X CCHECK(19)='Do not dimension COMMON variables outside COMMON'
- X CCHECK(20)='Avoid embedded blanks in variable names'
- X CCHECK(21)='Avoid embedded blanks in syntactic entities'
- X CCHECK(22)='Avoid the use of PRINT statements (use WRITE)'
- X CCHECK(23)='Do not give the END statement a label'
- X CCHECK(24)='Avoid WRITE(* construction'
- X CCHECK(25)='Avoid WRITE statement in a FUNCTION'
- X CCHECK(26)='Avoid the use of PAUSE statements'
- X CCHECK(27)='Statement labels should not begin in column 1'
- X CCHECK(28)='Always precede STOP by a descriptive WRITE'
- X CCHECK(29)='Avoid the use of ENTRY in FUNCTIONS'
- X CCHECK(30)='Avoid using I/O in FUNCTIONs'
- X CCHECK(31)='Avoid the use of the alternate RETURN statement'
- X CCHECK(32)='COMMON block names should not equal variable names'
- X CCHECK(33)='Avoid use of obsolete CERN library routines'
- X CCHECK(34)='Avoid FUNCTION names the same as intrinsics'
- X CCHECK(35)='Local functions should be declared EXTERNAL'
- X CCHECK(36)='program unit names should all be different'
- X CCHECK(37)='Avoid expressions of mixed mode eg A=B/I'
- X CCHECK(38)='Length of passed CHARACTER variables should be *'
- X CCHECK(39)='Order of statements should conform to note'
- X CCHECK(40)='Separate Statement Functions by comment lines'
- X CCHECK(41)='No names in Statement Function definitions elsewhere'
- X CCHECK(42)='Use LLT,LGT etc to compare CHARACTER vars. in IFs'
- X CCHECK(43)='Variables (not COMMON, not PARAMs) <6 characters'
- X CCHECK(44)=
- X & 'Passed arguments should be dimensioned * in program unit'
- X DO 1 IRULE=45,MCHEKS
- X CCHECK(IRULE) ='$$$$'
- X LCHECK(IRULE) =.FALSE.
- X 1 CONTINUE
- X RETURN
- X END
- /
- echo 'x - MATCH.f'
- sed 's/^X//' > MATCH.f << '/'
- X SUBROUTINE MATCH(SEARCH,IMC1,IMC2,STATEM,ICC1,ICC2, HOLFLG,KPOSM,
- X +ILEVEL,NSPEC,KSPEC1,KSPEC2)
- X*-----------------------------------------------------------------------
- X*
- X* matches two strings
- X*
- X* blanks outside strings are ignored in STATEM
- X*
- X* input
- X* SEARCH string (possibly with special symbols) to be matched
- X* special symbols and their meanings are :
- X* @ ( commercial at ) numeric string
- X* & ( ampersand ) alphabetic string
- X* $ ( dollar ) alphanumeric string
- X* # ( hash ) any string ( including null )
- X* ? ( questionmark ) FORTRAN name type ( length not
- X* limited)
- X* ! ( exclam. mark ) expression (no [,] at level 0)
- X* >) string up to open bracket level
- X* ; (semicolon) nothing must follow, i.e.
- X* ICC2 must be last matched ch.
- X* IMC1 first ch. in SEARCH
- X* IMC2 last ch. in SEARCH
- X* STATEM input string (typically a statement)
- X* ICC1 first ch. in STATEM
- X* ICC2 last ch. in STATEM
- X* HOLFLG if TRUE, hollerith included in STATEM
- X* output
- X* KPOSM position of last ch. in STATEM for first fit of SEARCH.
- X* if last ch. in SEARCH is a special ch.( as above),
- X* the match will be performed to the ENDC of that type.
- X* KPOSM = 0 in case of no match
- X* ILEVEL round bracket level relative to input level 0, at KPOS
- X* NSPEC no. of special ch. encountered in SEARCH
- X* KSPEC1(i) start of i-th special ch. corresp. string in STATEM
- X* KSPEC2(i) end - - - - - - - -
- X* attention: KSPEC2(i) < KSPEC1(i) for null string match
- X*
- X*-----------------------------------------------------------------------
- X DIMENSION KSPEC1(*),KSPEC2(*)
- X LOGICAL HOLFLG,FREE,EVER,POSIT
- X CHARACTER SEARCH*(*),STATEM*(*),STEMP*1,STEMP1*1
- X include 'CONVEX.h'
- X KPOSM=0
- X ILEVEL=0
- X NSPEC=0
- X*--- INSTR = string indicator for SEARCH, ISSTR for STATEM
- X INSTR=0
- X ISSTR=0
- X FREE=.FALSE.
- X EVER=.FALSE.
- X*--- KSTR is the current ch. pos. in STATEM
- X KSTR=ICC1
- X KEEP=ICC2
- X JC=IMC1-1
- X*--- loop over characters in 'SEARCH' string
- X*--- exits are:
- X* 10 continue looping
- X* 30 match exit
- X* 40 nomatch exit
- X 10 JC=JC+1
- X IF (JC.GT.IMC2) GOTO 30
- X STEMP=SEARCH(JC:JC)
- X IF(STEMP.EQ.'''') INSTR=1-INSTR
- X IF(INSTR.EQ.0) THEN
- X*--- not inside quotes
- X IF (STEMP.EQ.';') THEN
- X*--- matches if nothing follows in STATEM
- X IF (KSTR.GT.ICC2) THEN
- X GOTO 30
- X ENDIF
- X GOTO 40
- X ENDIF
- X IF (KSTR.GT.ICC2) THEN
- X IF (STEMP.EQ.'#'.AND.JC.EQ.IMC2) THEN
- X*--- '#' at end of SEARCH string
- X NSPEC=NSPEC+1
- X KSPEC1(NSPEC)=KSTR
- X FREE=.TRUE.
- X GOTO 30
- X ENDIF
- X GOTO 40
- X ENDIF
- X*
- X*--- for '#' and '>)', move the pointer forward
- X*
- X IF (STEMP.EQ.'#') THEN
- X*--- any string, including null
- X JCFREE=JC
- X FREE=.TRUE.
- X EVER=.TRUE.
- X NSPEC=NSPEC+1
- X NSPECK=NSPEC
- X KSPEC1(NSPEC)=KSTR
- X GOTO 10
- X ELSEIF (STEMP.EQ.'>') THEN
- X*--- look for ')' (level jump)
- X IF (JC.EQ.IMC2) GOTO 40
- X IF (SEARCH(JC+1:JC+1).NE.')')GOTO 40
- X*--- ')' is next character - perform level jump
- X CALL SKIPLV(STATEM,KSTR,ICC2,HOLFLG,KPOS,ILEV)
- X IF (KPOS.EQ.0) THEN
- X IF (EVER) THEN
- X JC=JCFREE
- X FREE=.TRUE.
- X KSTR=KEEP+1
- X GOTO 10
- X ENDIF
- X GOTO 40
- X ENDIF
- X NSPEC=NSPEC+1
- X KSPEC1(NSPEC)=KSTR
- X KSTR=KPOS
- X KSPEC2(NSPEC)=KPOS-1
- X GOTO 10
- X ENDIF
- X*
- X*--- set ITYPE to indicate normal ch. (0) or special
- X*
- X ITYPE=INDEX(SPCHAR,STEMP)
- X ELSE
- X*--- inside quotes in SEARCH - treat as normal
- X ITYPE=0
- X ENDIF
- X POSIT=.FALSE.
- X IF(FREE) THEN
- X*--- look for STEMP further upstream
- X FREE=.FALSE.
- X POSIT=.TRUE.
- X IF (ITYPE.EQ.0) THEN
- X*--- normal character
- X CALL POSCH(STEMP,STATEM,KSTR,ICC2,HOLFLG,9999,KPOS,ILEV)
- X ELSE
- X*--- special character
- X CALL CHRTYP(ITYPE,STATEM,KSTR,ICC2,HOLFLG,KPOS,ILEV)
- X ENDIF
- X*--- no match if not found
- X IF (KPOS.EQ.0) GOTO 40
- X KEEP=KPOS
- X KSTR=KPOS
- X ILEVEL=ILEVEL+ILEV
- X KSPEC2(NSPEC)=KPOS-1
- X*--- following ENDIF for IF FREE
- X ENDIF
- X*
- X*--- now STEMP must match, or be special
- X*
- X IF(ITYPE.EQ.0) THEN
- X*--- normal
- X 20 CONTINUE
- X IF (KSTR.GT.ICC2) GOTO 40
- X STEMP1=STATEM(KSTR:KSTR)
- X*--- skip blanks outside strings
- X IF (STEMP1.EQ.' '.AND.ISSTR.EQ.0) THEN
- X KSTR=KSTR+1
- X GOTO 20
- X ELSEIF (STEMP1.EQ.'{') THEN
- X*--- start of character string
- X IF (HOLFLG) THEN
- X*--- strings are included in match
- X KSTR=KSTR+1
- X ISSTR=1
- X ELSE
- X*--- skip over string
- X I=INDEX(STATEM(KSTR:ICC2),'}')
- X IF (I.EQ.0) GOTO 40
- X KSTR=I+KSTR
- X ENDIF
- X GOTO 20
- X ELSEIF (STEMP1.EQ.'}') THEN
- X*--- skip
- X KSTR=KSTR+1
- X ISSTR=0
- X GOTO 20
- X ENDIF
- X*--- now match STEMP and STEMP1
- X IF (STEMP.EQ.STEMP1) THEN
- X KSTR=KSTR+1
- X IF (.NOT.POSIT) THEN
- X IF (STEMP.EQ.'(') THEN
- X ILEVEL=ILEVEL+1
- X ELSEIF (STEMP.EQ.')') THEN
- X ILEVEL=ILEVEL-1
- X ENDIF
- X ENDIF
- X GOTO 10
- X ELSE
- X*--- try further upstream if possible
- X IF (EVER) THEN
- X JC=JCFREE
- X FREE=.TRUE.
- X KSTR=KEEP+1
- X NSPEC=NSPECK
- X GOTO 10
- X ENDIF
- X GOTO 40
- X ENDIF
- X ELSE
- X*--- string of type ITYPE
- X CALL SKIPTP(ITYPE,STATEM,KSTR,ICC2,.FALSE.,KPOS,ILEV)
- X IF (KPOS.EQ.0) THEN
- X IF (EVER) THEN
- X JC=JCFREE
- X KSTR=KEEP+1
- X NSPEC=NSPECK
- X FREE=.TRUE.
- X GOTO 10
- X ENDIF
- X GOTO 40
- X ELSE
- X*--- KPOS ne 0, i.e. found
- X NSPEC=NSPEC+1
- X KSPEC1(NSPEC)=KSTR
- X KSPEC2(NSPEC)=KPOS
- X KSTR=KPOS+1
- X ILEVEL=ILEVEL+ILEV
- X GOTO 10
- X ENDIF
- X ENDIF
- X 30 CONTINUE
- X*--- when arriving here, strings do match
- X IF (FREE) THEN
- X KPOSM=ICC2
- X KSPEC2(NSPEC)=ICC2
- X ELSE
- X KPOSM=KSTR-1
- X ENDIF
- X 40 CONTINUE
- X END
- /
- echo 'x - README'
- sed 's/^X//' > README << '/'
- XInstructions for Installing Floppy
- X----------------------------------
- X
- XFloppy is a Fortran Coding Convention Checker and Fortran
- Xcode tidier. Floppy understands standard Fortran 77 code.
- XThe user may specify any combination of a total of 44
- Xdifferent coding conventions. These are described fully
- Xin the Floppy guide, which comes as a PostScript file in
- Xthe posting. (I also include the list of checks at the
- Xend of this article, those marked with an asterisk
- Xcorrespond to what we consider to be a "standard" set.)
- XUsers may tidy their code by renumbering all
- Xstatement labels, renumbering all FORMAT statements,
- Xindenting DO and IF clauses, right-adjusting GOTOs and
- Xby moving all FORMAT statements to the end of each program
- Xmodule. Any combination of these tidy options is possible.
- X
- XFloppy was initially written for VMS systems. The posting
- Xincludes routines and execs that allow Floppy to be built
- Xfor VM/CMS, VAX/VMS and Unix systems. The procedure for
- Xeach system is described briefly below.
- X
- XFloppy was written by Julian Bunn and Hans Grote, at the
- XEuropean Centre for Particle Physics in Geneva, Switzerland.
- X
- XFirst Steps
- X-----------
- X
- XEach part of the posting should be saved into a
- Xdirectory called "floppy". The mail headers should be
- Xremoved from each part and then each part
- Xshould be executed as a script (Floppy was packed using
- Xthe Packmail utility on a VMS Ultrix system).
- X
- XThere is a document in PostScript form, called "floppy.ps",
- Xwhich describes in detail how Floppy works and is used on
- XUltrix, VAX/VMS and VM/CMS systems.
- X
- XPlease read the file called "copyright".
- X
- XPlease also note that the source code for Floppy does
- XNOT necessarily conform to the coding conventions it
- Xitself checks ! You may draw whatever conclusions you
- Xwish from this fact !
- X
- XInstalling on Unix Systems
- X--------------------------
- X1) After unpacking the source files, you should type "make".
- X2) If your Fortran compiler is not called "f77" then you
- X should first edit the file called "makefile" accordingly.
- X
- XAs installation has not been checked on many Unix
- Xplatforms, you may also have to fiddle a bit with the
- Xmakefile, and possibly with the syntax of the "include"
- Xdirectives in the .f files.
- X
- XThe "man" page for Floppy is called "floppy.l".
- X
- XInstalling on VMS Systems
- X-------------------------
- X1) Copy all the .f and .h files to your VMS system.
- X2) Copy also the files "floppy.vmsfor","floppy.vmshlp",
- X and "floppy.vmscld".
- X3) Remove the file "floppy.f", and replace it with the
- X "floppy.vmsfor" file.
- X4) You will then have to edit all the "include" directives
- X in the .f files to correspond with the VMS syntax.
- X (If you're handy with "awk", you can probably do this
- X already on your Unix machine.)
- X5) You should also edit PARAM.h so that MCUNIT=5.
- X6) Then compile the Fortran files, and link them together.
- X No libraries should be required.
- X7) Take the "floppy.vmscld" file, edit it so that the
- X image name is correct for your .EXE, and save it as
- X "floppy.cld".
- X8) Then type "$ set command floppy".
- X9) Refer to the VMS help file in "floppy.vmshlp" for the
- X syntax of the command.
- X
- XTo make Floppy available for all users on your VMS system, you
- Xwill need privilege to update DCLTABLES with the
- X"set command" command.
- X
- XInstalling on VM/CMS
- X--------------------
- X1) Copy all the .f and .h files to your CMS minidisk.
- X2) Remove the "floppy.f" file.
- X3) Make one big file out of all the .f files.
- X4) Copy also the files "floppy.rexx" (call it "floppy exec"),
- X "floppy.panel" (call it "floppy panel"), and "floppy.helpcms"
- X (call it "floppy helpcms").
- X5) You will then have to edit all the "include" directives
- X to correspond with the CMS MACLIB syntax.
- X (If you're handy with "awk", you can probably do this already
- X on your Unix machine.)
- X6) Create a CMS MACLIB, and place all the .h files in it.
- X7) Issue the GLOBAL MACLIB command to make the MACLIB available.
- X8) Edit PARAM.h so that MCUNIT=5.
- X9) Then compile the Fortran, and load it.
- X No libraries should be required.
- X10) Generate a LOAD module called FLOPPY$M using the GENMOD
- X command.
- X
- XNote that, for full-screen interaction, you need
- Xthe IOS3270 Program Offering from IBM. But Floppy also
- Xworks in command line mode. Refer to the HELPCMS file
- Xfor details.
- X
- XDisclaimer
- X----------
- XAlthough Floppy has been in constant use for some years at
- XCERN, we make no guarantees of its correctness or "buglessness".
- XIf you manage to port Floppy to another platform, I would be
- Xvery interested to hear details. Unfortunately, I cannot assist
- Xin any way with such exercises. Please read the file called
- X"copyright" in the posting.
- X
- X-------------------------------------------------------------------
- X
- XJulian Bunn
- XComputing and Networks Division
- XCERN
- XGeneva
- XSwitzerland
- XTel. 767 50 29
- X14th. May 1990
- X
- XList of Coding Conventions in Floppy
- X
- X* 1 Avoid comment lines after end of module
- X* 2 End all program modules with the END statement
- X* 3 Declared COMMON blocks must be used in the module
- X* 4 COMPLEX and DOUBLEPRECISION vars at end of COMMON
- X* 5 COMMON block definitions should not change
- X* 6 Variable names should be 6 or fewer characters long
- X 7 Variables in COMMON should be 6 characters long
- X 8 Variables not in COMMON should be <6 characters
- X* 9 Integer variables should begin with I to N
- X* 10 Variable names should not equal FORTRAN keywords
- X* 11 Avoid comment lines before module declaration
- X* 12 Module names should not equal intrinsic functions
- X* 13 First statement in a module should be declaration
- X* 14 Module should begin with at least 3 comment lines
- X 15 Comment lines should begin with a C
- X* 16 No comment lines between continuations
- X* 17 Avoid non-standard variable types eg INTEGER*2
- X* 18 Avoid multiple COMMON definitions per line
- X* 19 Do not dimension COMMON variables outside COMMON
- X* 20 Avoid embedded blanks in variable names
- X* 21 Avoid embedded blanks in syntactic entities
- X* 22 Avoid the use of PRINT statements (use WRITE)
- X 23 Do not give the END statement a label
- X* 24 Avoid WRITE(* construction
- X 25 Avoid WRITE statement in a FUNCTION
- X* 26 Avoid the use of PAUSE statements
- X* 27 Statement labels should not begin in column 1
- X* 28 Always preceede STOP by a descriptive WRITE
- X* 29 Avoid the use of ENTRY in FUNCTIONS
- X* 30 Avoid using I/O in FUNCTIONs
- X 31 Avoid the use of the alternate RETURN statement
- X* 32 COMMON block names should not equal variable names
- X* 33 Avoid use of obsolete CERN library routines
- X 34 Avoid FUNCTION names the same as intrinsics
- X* 35 Local functions should be declared EXTERNAL
- X* 36 Module names should all be different
- X* 37 Avoid expressions of mixed mode eg A=B/I
- X* 38 Length of passed CHARACTER variables should be *
- X* 39 Order of statements should conform !
- X* 40 Separate Statement Functions by comment lines
- X* 41 No names in Statement Function definitions elsewhere
- X 42 Use LLT,LGT etc to compare CHARACTER vars. in IFs
- X 43 Variables (not COMMON, not PARAMs) <6 characters
- X* 44 Passed arguments should be dimensioned * in module
- /
- echo 'x - UTINIT.f'
- sed 's/^X//' > UTINIT.f << '/'
- X SUBROUTINE UTINIT
- X*-----------------------------------------------------------------------
- X*
- X*--- user total initialization
- X*
- X*-----------------------------------------------------------------------
- X include 'PARAM.h'
- X include 'ALCAZA.h'
- X include 'CLASS.h'
- X include 'CURSTA.h'
- X include 'FLWORK.h'
- X include 'KEYCOM.h'
- X include 'TYPDEF.h'
- X include 'JOBSUM.h'
- X include 'STATE.h'
- X include 'FLAGS.h'
- X include 'USIGNO.h'
- X include 'USLIST.h'
- X include 'USGCOM.h'
- X include 'USSTMT.h'
- X include 'USUNIT.h'
- X include 'CHECKS.h'
- X CHARACTER*80 CARD
- X PARAMETER(ISTCHK=35,IALCHK=40)
- X INTEGER NSTCHK(ISTCHK)
- X INTEGER NALCHK(IALCHK)
- X DATA NSTCHK /1,2,3,4,5,6,9,10,11,12,13,14,16,17,18,19,20,21,
- X & 22,24,26,27,28,29,30,32,33,35,36,37,38,39,40,41,44/
- X DATA NALCHK /1,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,
- X & 20,21,22,23,24,26,27,28,29,30,31,32,33,34,36,37,
- X & 38,39,40,41,42,43,44/
- X NFIOLD = 0
- X NFAULT = 0
- X USFULL = .FALSE.
- X RPROCS = .TRUE.
- X UNFLP = .FALSE.
- X NGCON = 0
- X NGCOT = 0
- X WRITE(MPUNIT,500)
- XC
- XC Start of process ... define FORTRAN intrinsics
- X CALL DEFINF
- XC
- XC Define comments for each rule
- X CALL COMRUL
- XC
- XC Check for USERs list of variables to be ignored in checks.
- X NIGNOR = 0
- X NIGNOS = 0
- X DO 10 I=1,MXIGNV
- X CIGNOR(I) = ' '
- X LIGNOR(I) = 0
- X 10 CONTINUE
- X DO 20 I=1,MXIGNS
- X CIGNOS(I) = ' '
- X LIGNOS(I) = 0
- X 20 CONTINUE
- X DO 30 I=1,MCHEKS
- X LCHECK(I) = .FALSE.
- X 30 CONTINUE
- X GALEPH = .FALSE.
- X ISTAN = 0
- X IALEP = 0
- X 40 READ(MUUNIT,510,ERR=70,END=70) CARD
- X ICHAR = 0
- X LSUB = 0
- X LVAR = 0
- X DO 50 I=1,MXLINE-1
- X IF(CARD(I:I).EQ.' ') GOTO 50
- X IF(CARD(I:I).EQ.'*') THEN
- XC SPECIAL PROGRAM
- X IF(INDEX(CARD,'GALEPH').NE.0) GALEPH = .TRUE.
- XC FULL LIST OF SOURCE WITH LINE NUMBERS
- X IF(INDEX(CARD,'FULL').NE.0) USFULL = .TRUE.
- XC CHECK FOR JUST FLOP
- X IF(INDEX(CARD,'NOFLOPPY').NE.0) UNFLP = .TRUE.
- XC CHECK FOR INTERACTIVE RULE SPECIFICATION
- X IF(INDEX(CARD,'SPECIFY RULE').NE.0) CALL SPERUL
- XC CHECK FOR ALEPH RULES
- X IF(INDEX(CARD,'ALEPH').NE.0) THEN
- X IALEP = 1
- X DO 333 IA=1,IALCHK
- X LCHECK(NALCHK(IA)) = .TRUE.
- X 333 CONTINUE
- X ENDIF
- XC CHECK FOR RULE NUMBER
- X IF(INDEX(CARD,'*CHECK RULE').NE.0) THEN
- X LOCE = INDEX(CARD,'*CHECK RULE')+12
- X IF(CARD(LOCE:LOCE).EQ.'*') THEN
- XC CHECK STANDARD SET
- X ISTAN=1
- X DO 61 IR=1,ISTCHK
- X LCHECK(NSTCHK(IR)) = .TRUE.
- X 61 CONTINUE
- X GOTO 60
- X ENDIF
- X READ(CARD(LOCE:LOCE+2),'(I3)') IRULE
- X IF(IRULE.EQ.99) THEN
- X DO 777 IC=1,MCHEKS
- X LCHECK(IC)=.TRUE.
- X 777 CONTINUE
- X ELSE IF(IRULE.EQ.-99) THEN
- X DO 888 IC=1,MCHEKS
- X LCHECK(IC)=.FALSE.
- X 888 CONTINUE
- X ELSE IF(IRULE.GE.1.AND.IRULE.LE.MCHEKS) THEN
- X LCHECK(IRULE) = .TRUE.
- X ELSE IF (IRULE.LT.0.AND.IRULE.GE.-MCHEKS) THEN
- X LCHECK(IABS(IRULE)) = .FALSE.
- X ELSE
- X WRITE(MPUNIT,580) CARD(LOCE:LOCE+2)
- X ENDIF
- X ENDIF
- X GOTO 60
- X ENDIF
- X ICHAR = ICHAR + 1
- X IF(ICHAR.GT.MXNMCH) GOTO 60
- X IF(ICHAR.EQ.1.AND.CARD(I:I).NE.'#') THEN
- X NIGNOR = NIGNOR + 1
- X IF(NIGNOR.GT.MXIGNV) THEN
- X WRITE(MPUNIT,520) MXIGNV
- X GOTO 70
- X ENDIF
- X LVAR = 1
- X ELSEIF (ICHAR.EQ.1.AND.CARD(I:I).EQ.'#') THEN
- X NIGNOS = NIGNOS + 1
- X IF(NIGNOS.GT.MXIGNS) THEN
- X WRITE(MPUNIT,560) MXIGNS
- X GOTO 70
- X ENDIF
- X LSUB = 1
- X GOTO 50
- X ENDIF
- X IF(LVAR.EQ.1) THEN
- X CIGNOR(NIGNOR)(ICHAR:ICHAR) = CARD(I:I)
- X LIGNOR(NIGNOR) = ICHAR
- X IF(CARD(I+1:I+1).EQ.' ') GOTO 60
- X ELSE IF(LSUB.EQ.1) THEN
- X CIGNOS(NIGNOS)(ICHAR-1:ICHAR-1) = CARD(I:I)
- X LIGNOS(NIGNOS) = ICHAR-1
- X IF(CARD(I+1:I+1).EQ.' ') GOTO 60
- X ENDIF
- X 50 CONTINUE
- X 60 CONTINUE
- X GOTO 40
- XC
- X 70 CONTINUE
- X NCHK = 0
- X DO 71 IR=1,MCHEKS
- X IF(.NOT.LCHECK(IR)) GOTO 71
- X IF(CCHECK(IR)(:4).EQ.'$$$$') GOTO 71
- X NCHK = NCHK + 1
- X WRITE(MPUNIT,543) IR,CCHECK(IR)
- X 71 CONTINUE
- X IF(NCHK.EQ.0) WRITE(MPUNIT,544)
- X IF(UNFLP) WRITE(MPUNIT,542)
- X IF(ISTAN.EQ.1) WRITE(MPUNIT,545)
- X IF(IALEP.EQ.1) WRITE(MPUNIT,585)
- X IF(NIGNOR.NE.0) THEN
- X WRITE(MPUNIT,530) NIGNOR,(CIGNOR(II),II=1,NIGNOR)
- X ENDIF
- X IF(NIGNOS.NE.0) THEN
- X WRITE(MPUNIT,570) NIGNOS,(CIGNOS(II),II=1,NIGNOS)
- X ENDIF
- X IF(GALEPH) WRITE(MPUNIT,540)
- X IF(USFULL) WRITE(MPUNIT,550)
- X 500 FORMAT(/,'NB Check that your source compiles before using FLOPPY!',
- X + /,' The quoted line numbers start at 1 and step by 1 in',
- X + ' the source file.',
- X + /,' Non-standard F77 statements are treated as Comments!',
- X + /,' This includes ALL LOWER CASE not in strings.')
- X 510 FORMAT(A80)
- X 520 FORMAT(1X,'MAXIMUM OF ',I3,' IGNORABLE NAMES EXCEEDED')
- X 530 FORMAT(1X,20('+'),' YOU HAVE CHOSEN TO IGNORE',I3,
- X +' VARIABLES. THEIR NAMES FOLLOW',/,(2X,A))
- X 540 FORMAT(//,1X,20('+'),' SPECIAL PROCESSING FOR G A L E P H !',/)
- X 550 FORMAT(//,1X,20('+'),' FULL SOURCE LISTING WITH LINE NUMBERS !',/)
- X 560 FORMAT(1X,'MAXIMUM OF ',I3,' IGNORABLE SUBROUTINES EXCEEDED')
- X 570 FORMAT(1X,20('+'),' YOU HAVE CHOSEN TO IGNORE ',I3,
- X +' SUBROUTINES. THEIR NAMES FOLLOW',/,(2X,A))
- X 543 FORMAT(1X,'RULE ',I3,' "',A,'"')
- X 544 FORMAT(1X,'NO CODING CONVENTIONS WILL BE CHECKED')
- X 580 FORMAT(1X,'INVALID RULE NUMBER ',A,' CANNOT BE CHECKED')
- X 542 FORMAT(//,1X,' YOU SPECIFIED NO CONVENTION CHECKING !')
- X 545 FORMAT(1X,'THE STANDARD SET OF CONVENTIONS WILL BE CHECKED')
- X 585 FORMAT(1X,'THE ALEPH CODING CONVENTIONS WILL BE CHECKED')
- X END
- /
- echo 'x - floppy.f'
- sed 's/^X//' > floppy.f << '/'
- X PROGRAM FLOPPY
- XC-------------------------------------------------------------------------
- XC Floppy UNIX interface routine.
- XC Sets up various required input files for Floppy.
- XC
- XC Julian Bunn 1990
- XC-------------------------------------------------------------------------
- X PARAMETER (MLEN=256,MXLIN=80,maxarg=100)
- X character*(mxlin) argval
- X character*1 key,char
- X CHARACTER*(MLEN) CFILE,COLD,CFORT,CTEMP,CBAD
- X LOGICAL LOG,fexist,fold,fqold,tidy
- Xc
- Xc get all arguments
- Xc
- X numargs = iargc()
- X if(numargs.gt.maxarg) then
- X write(6,'(A)') ' Floppy --> Too many arguments '
- X goto 900
- X endif
- Xc
- Xc get target filename(s)
- Xc
- X call getarg(numargs,cfile)
- X lfile = index(cfile,' ')-1
- X write(6,'(A)') ' Floppy --> Target file '//cfile(:lfile)
- X inquire(file=cfile(:lfile),exist=fexist)
- X if(.not.fexist) then
- X write(6,'(A)') ' Floppy --> Target file not found !'
- X goto 900
- X endif
- Xc
- X log = .false.
- X fold = .false.
- X tidy = .false.
- X cfort = ' '
- Xc
- X do 400 iarg=1,numargs-1
- X call getarg(iarg,argval)
- X if(argval(:2).eq.'-l') log = .true.
- X if(argval(:2).eq.'-o') fqold = .true.
- X if(argval(:2).eq.'-o') cold = argval(3:)
- X 400 continue
- Xc
- X cbad = 'scratch'
- X open(7,status='scratch',err=999)
- X WRITE(7,'(A)') 'LIST,GLOBAL,TYPE;'
- X WRITE(7,'(A)') 'PRINT,ILLEGAL;'
- X WRITE(7,'(A)') 'OPTIONS,USER;'
- X if(fqold) then
- X if(cold(1:1).eq.' ') cold = cfile(:lfile)//'.flopold'
- X lold = index(cold,' ')-1
- X inquire(file=cold(:lold),exist=fold)
- X if(log) write(6,'(A)') ' Floppy --> Old file: '//cold(:lold)
- X if(.not.fold) then
- X write(6,'(A)') ' Floppy --> Old file not found !'
- X goto 900
- X endif
- X cbad = cold
- X open(15,file=cold,status='old',err=999)
- X 450 read(15,'(A)',end=451,err=999) ctemp
- X goto 450
- X 451 continue
- X else
- X cold = cfile(:lfile)//'.flopold'
- X lold = index(cold,' ')-1
- X cbad = cold
- X open(15,file=cold(:lold),status='unknown',err=999)
- X endif
- Xc
- Xc loop over all qualifiers
- Xc
- X icheck = 0
- X do 500 iarg = 1,numargs-1
- X call getarg(iarg,argval)
- X larg = index(argval,' ')-1
- X key = argval(2:2)
- X if(key.eq.'l') then
- X log = .true.
- X else if(key.eq.'n') then
- X if(argval(3:3).eq.' ') then
- X write(6,'(A)') ' Floppy --> Missing value for -n'
- X goto 900
- X endif
- X cfort = argval(3:)
- X lfort = index(cfort,' ')-1
- X if(log) write(6,'(A)') ' Floppy --> Tidied Fortran: '//
- X & cfort(:lfort)
- X else if(key.eq.'o') then
- Xc
- X else if(key.eq.'f') then
- X if(log) write(6,'(A)') ' Floppy --> List source line numbers'
- X write(15,'(a)') '*FULL'
- X else if(key.eq.'i') then
- X ctemp = argval(3:)
- X 50 iend = index(ctemp,',')
- X if(iend.ne.0) then
- X write(15,'(A)') ctemp(:iend-1)
- X if(log) write(6,'(A)')
- X & ' Floppy --> Ignore: '//ctemp(:iend-1)
- X ctemp = ctemp(iend+1:)
- X goto 50
- X endif
- X iend = index(ctemp,' ')
- X write(15,'(A)') ctemp(:iend)
- X if(log) write(6,'(A)') ' Floppy --> Ignore: '//ctemp(:iend)
- X else if(key.eq.'c') then
- X icheck = 1
- X ctemp = argval(3:)
- X if(ctemp.eq.'standard') then
- X write(15,'(A)') '*CHECK RULE *'
- X if(log) write(6,'(A)') ' Floppy --> Check Standard rules'
- X else if(ctemp.eq.' ') then
- X write(15,'(A)') '*CHECK RULE *'
- X if(log) write(6,'(A)') ' Floppy --> Check Standard rules'
- X else if(ctemp.eq.'a') then
- X write(15,'(A)') '*CHECK RULE 99'
- X if(log) write(6,'(A)') ' Floppy --> Check all rules'
- X else if(ctemp.eq.'n') then
- X write(15,'(A)') '*CHECK RULE -99'
- X if(log) write(6,'(A)') ' Floppy --> No rule checks'
- X else
- X ctemp = ctemp(:index(ctemp,' ')-1)
- X if(log) write(6,'(A)') ' Floppy --> Check rules: '//
- X & ctemp(:index(ctemp,' ')-1)
- X 51 iend = index(ctemp,',')
- X if(iend.ne.0) then
- X write(15,'(A)') '*CHECK RULE '//ctemp(:iend-1)
- X ctemp = ctemp(iend+1:)
- X goto 51
- X endif
- X write(15,'(A)') '*CHECK RULE '//ctemp
- X endif
- X else if(key.eq.'t') then
- X else if(key.eq.'j') then
- X char = argval(3:3)
- X if(char.eq.' ') char = '3'
- X write(7,'(A)') 'OPTIONS,INDENT='//char//';'
- X if(log) write(6,'(A)') ' Floppy --> Indent clauses by '//char
- X tidy = .true.
- X else if(key.eq.'f') then
- X write(7,'(A)') 'STATEMENTS,SEPARATE;'
- X if(log) write(6,'(A)') ' Floppy --> Group FORMATs at end'
- X tidy = .true.
- X else if(key.eq.'g') then
- X write(7,'(A)') 'STATEMENTS,GOTO;'
- X if(log) write(6,'(A)') ' Floppy --> Right align GOTOs'
- X tidy = .true.
- X else if(key.eq.'r') then
- X ctemp = argval(3:)
- X iend = index(ctemp,',')
- X if (iend.eq.0) ctemp = ctemp(:index(ctemp,' ')-1)//',10'
- X write(7,'(A)') 'STATEMENTS,FORMAT='//
- X & ctemp(:index(ctemp,' ')-1)//';'
- X if(log) write(6,'(A)') ' Floppy --> Renumber FORMATs: '//
- X & 'start,step '//ctemp(:index(ctemp,' '))
- X tidy = .true.
- X else if(key.eq.'s') then
- X ctemp = argval(3:)
- X iend = index(ctemp,',')
- X if (iend.eq.0) ctemp = ctemp(:index(ctemp,' ')-1)//',10'
- X write(7,'(A)') 'STATEMENTS,NUMBER='//
- X & ctemp(:index(ctemp,' ')-1)//';'
- X if(log) write(6,'(A)') ' Floppy --> Renumber statements: '//
- X & 'start,step '//ctemp(:index(ctemp,' '))
- X tidy = .true.
- X else
- X write(6,'(A)') ' Floppy --> Unrecognized qualifier '//key
- X endif
- X 500 continue
- Xc
- X if(tidy) then
- X write(7,'(A)') 'OUTPUT,FULL,COMPRESS;'
- X if(cfort(1:1).eq.' ') then
- X cfort = cfile(:lfile)//'.out'
- X lfort = index(cfort,' ')-1
- X endif
- X cbad = cfort
- X open(14,file=cfort(:lfort),status='unknown',err=999)
- X endif
- Xc
- Xc default action is to check standard rules
- Xc
- X if(icheck.eq.0.and..not.fqold) then
- X write(15,'(A)') '*CHECK RULE *'
- X endif
- X
- X write(7,'(A)') 'END;'
- X if(log) write(6,'(A)') ' Floppy --> Finished parsing command'
- X rewind(7)
- X rewind(15)
- X cbad = cfile
- X open(11,file=cfile(:lfile),status='old',err=999)
- X cbad = 'scratch'
- X open(99,status='scratch',err=999)
- Xc
- X call allpro
- Xc
- X close(11)
- X if(tidy) close(14)
- X close(7)
- X close(99)
- X goto 2000
- XC
- X 999 CONTINUE
- X WRITE(6,'(A)') ' Floppy --> Error opening '//
- X & cbad(:index(cbad,' '))
- X 900 write(6,'(A)') ' Floppy aborted'
- X 2000 CONTINUE
- X END
- /
- echo 'x - floppy.f'
- sed 's/^X//' > floppy.f << '/'
- X PROGRAM FLOPPY
- XC-------------------------------------------------------------------------
- XC Floppy UNIX interface routine.
- XC Sets up various required input files for Floppy.
- XC
- XC Julian Bunn 1990
- XC-------------------------------------------------------------------------
- X PARAMETER (MLEN=256,MXLIN=80,maxarg=100)
- X character*(mxlin) argval
- X character*1 key,char
- X CHARACTER*(MLEN) CFILE,COLD,CFORT,CTEMP,CBAD
- X LOGICAL LOG,fexist,fold,fqold,tidy
- Xc
- Xc get all arguments
- Xc
- X numargs = iargc()
- X if(numargs.gt.maxarg) then
- X write(6,'(A)') ' Floppy --> Too many arguments '
- X goto 900
- X endif
- Xc
- Xc get target filename(s)
- Xc
- X call getarg(numargs,cfile)
- X lfile = index(cfile,' ')-1
- X write(6,'(A)') ' Floppy --> Target file '//cfile(:lfile)
- X inquire(file=cfile(:lfile),exist=fexist)
- X if(.not.fexist) then
- X write(6,'(A)') ' Floppy --> Target file not found !'
- X goto 900
- X endif
- Xc
- X log = .false.
- X fold = .false.
- X tidy = .false.
- X cfort = ' '
- Xc
- X do 400 iarg=1,numargs-1
- X call getarg(iarg,argval)
- X if(argval(:2).eq.'-l') log = .true.
- X if(argval(:2).eq.'-o') fqold = .true.
- X if(argval(:2).eq.'-o') cold = argval(3:)
- X 400 continue
- Xc
- X cbad = 'scratch'
- X open(7,status='scratch',err=999)
- X WRITE(7,'(A)') 'LIST,GLOBAL,TYPE;'
- X WRITE(7,'(A)') 'PRINT,ILLEGAL;'
- X WRITE(7,'(A)') 'OPTIONS,USER;'
- X if(fqold) then
- X if(cold(1:1).eq.' ') cold = cfile(:lfile)//'.flopold'
- X lold = index(cold,' ')-1
- X inquire(file=cold(:lold),exist=fold)
- X if(log) write(6,'(A)') ' Floppy --> Old file: '//cold(:lold)
- X if(.not.fold) then
- X write(6,'(A)') ' Floppy --> Old file not found !'
- X goto 900
- X endif
- X cbad = cold
- X open(15,file=cold,status='old',err=999)
- X 450 read(15,'(A)',end=451,err=999) ctemp
- X goto 450
- X 451 continue
- X else
- X cold = cfile(:lfile)//'.flopold'
- X lold = index(cold,' ')-1
- X cbad = cold
- X open(15,file=cold(:lold),status='unknown',err=999)
- X endif
- Xc
- Xc loop over all qualifiers
- Xc
- X icheck = 0
- X do 500 iarg = 1,numargs-1
- X call getarg(iarg,argval)
- X larg = index(argval,' ')-1
- X key = argval(2:2)
- X if(key.eq.'l') then
- X log = .true.
- X else if(key.eq.'n') then
- X if(argval(3:3).eq.' ') then
- X write(6,'(A)') ' Floppy --> Missing value for -n'
- X goto 900
- X endif
- X cfort = argval(3:)
- X lfort = index(cfort,' ')-1
- X if(log) write(6,'(A)') ' Floppy --> Tidied Fortran: '//
- X & cfort(:lfort)
- X else if(key.eq.'o') then
- Xc
- X else if(key.eq.'f') then
- X if(log) write(6,'(A)') ' Floppy --> List source line numbers'
- X write(15,'(a)') '*FULL'
- X else if(key.eq.'i') then
- X ctemp = argval(3:)
- X 50 iend = index(ctemp,',')
- X if(iend.ne.0) then
- X write(15,'(A)') ctemp(:iend-1)
- X if(log) write(6,'(A)')
- X & ' Floppy --> Ignore: '//ctemp(:iend-1)
- X ctemp = ctemp(iend+1:)
- X goto 50
- X endif
- X iend = index(ctemp,' ')
- X write(15,'(A)') ctemp(:iend)
- X if(log) write(6,'(A)') ' Floppy --> Ignore: '//ctemp(:iend)
- X else if(key.eq.'c') then
- X icheck = 1
- X ctemp = argval(3:)
- X if(ctemp.eq.'standard') then
- X write(15,'(A)') '*CHECK RULE *'
- X if(log) write(6,'(A)') ' Floppy --> Check Standard rules'
- X else if(ctemp.eq.' ') then
- X write(15,'(A)') '*CHECK RULE *'
- X if(log) write(6,'(A)') ' Floppy --> Check Standard rules'
- X else if(ctemp.eq.'a') then
- X write(15,'(A)') '*CHECK RULE 99'
- X if(log) write(6,'(A)') ' Floppy --> Check all rules'
- X else if(ctemp.eq.'n') then
- X write(15,'(A)') '*CHECK RULE -99'
- X if(log) write(6,'(A)') ' Floppy --> No rule checks'
- X else
- X ctemp = ctemp(:index(ctemp,' ')-1)
- X if(log) write(6,'(A)') ' Floppy --> Check rules: '//
- X & ctemp(:index(ctemp,' ')-1)
- X 51 iend = index(ctemp,',')
- X if(iend.ne.0) then
- X write(15,'(A)') '*CHECK RULE '//ctemp(:iend-1)
- X ctemp = ctemp(iend+1:)
- X goto 51
- X endif
- X write(15,'(A)') '*CHECK RULE '//ctemp
- X endif
- X else if(key.eq.'t') then
- X else if(key.eq.'j') then
- X char = argval(3:3)
- X if(char.eq.' ') char = '3'
- X write(7,'(A)') 'OPTIONS,INDENT='//char//';'
- X if(log) write(6,'(A)') ' Floppy --> Indent clauses by '//char
- X tidy = .true.
- X else if(key.eq.'f') then
- X write(7,'(A)') 'STATEMENTS,SEPARATE;'
- X if(log) write(6,'(A)') ' Floppy --> Group FORMATs at end'
- X tidy = .true.
- X else if(key.eq.'g') then
- X write(7,'(A)') 'STATEMENTS,GOTO;'
- X if(log) write(6,'(A)') ' Floppy --> Right align GOTOs'
- X tidy = .true.
- X else if(key.eq.'r') then
- X ctemp = argval(3:)
- X iend = index(ctemp,',')
- X if (iend.eq.0) ctemp = ctemp(:index(ctemp,' ')-1)//',10'
- X write(7,'(A)') 'STATEMENTS,FORMAT='//
- X & ctemp(:index(ctemp,' ')-1)//';'
- X if(log) write(6,'(A)') ' Floppy --> Renumber FORMATs: '//
- X & 'start,step '//ctemp(:index(ctemp,' '))
- X tidy = .true.
- X else if(key.eq.'s') then
- X ctemp = argval(3:)
- X iend = index(ctemp,',')
- X if (iend.eq.0) ctemp = ctemp(:index(ctemp,' ')-1)//',10'
- X write(7,'(A)') 'STATEMENTS,NUMBER='//
- X & ctemp(:index(ctemp,' ')-1)//';'
- X if(log) write(6,'(A)') ' Floppy --> Renumber statements: '//
- X & 'start,step '//ctemp(:index(ctemp,' '))
- X tidy = .true.
- X else
- X write(6,'(A)') ' Floppy --> Unrecognized qualifier '//key
- X endif
- X 500 continue
- Xc
- X if(tidy) then
- X write(7,'(A)') 'OUTPUT,FULL,COMPRESS;'
- X if(cfort(1:1).eq.' ') then
- X cfort = cfile(:lfile)//'.out'
- X lfort = index(cfort,' ')-1
- X endif
- X cbad = cfort
- X open(14,file=cfort(:lfort),status='unknown',err=999)
- X endif
- Xc
- Xc default action is to check standard rules
- Xc
- X if(icheck.eq.0.and..not.fqold) then
- X write(15,'(A)') '*CHECK RULE *'
- X endif
- X
- X write(7,'(A)') 'END;'
- X if(log) write(6,'(A)') ' Floppy --> Finished parsing command'
- X rewind(7)
- X rewind(15)
- X cbad = cfile
- X open(11,file=cfile(:lfile),status='old',err=999)
- X cbad = 'scratch'
- X open(99,status='scratch',err=999)
- Xc
- X call allpro
- Xc
- X close(11)
- X if(tidy) close(14)
- X close(7)
- X close(99)
- X goto 2000
- XC
- X 999 CONTINUE
- X WRITE(6,'(A)') ' Floppy --> Error opening '//
- X & cbad(:index(cbad,' '))
- X 900 write(6,'(A)') ' Floppy aborted'
- X 2000 CONTINUE
- X END
- /
- echo 'x - makefile'
- sed 's/^X//' > makefile << '/'
- X# Makefile for floppy
- X# FORTRAN coding convention checker - J Bunn/CERN
- X
- XF77 = f77
- XFFLAGS = -w -c
- XFFLAGSO = -w
- XOBJS = ALLPRO.o ARGTYP.o BINSRC.o CHKCHR.o CHKOBS.o CHRTYP.o CLASSF.o COMPAC.o \
- X COMRUL.o DEFINF.o DEFSTA.o ERREX1.o EXTRAC.o FILTER.o FLDUMP.o FLINIT.o \
- X FLPRNT.o GETALL.o GETCON.o GETINT.o GETNAM.o GETNBL.o GETOPT.o \
- X GETRNG.o HEADER.o INDECO.o INDECS.o INDECT.o INDECZ.o INEXTR.o INLINE.o \
- X INUSER.o ISBIT.o ITBIT.o LEXARS.o LASTNB.o LMERGE.o LSORT.o MARKST.o \
- X MATCH.o MIXMOD.o NAMOVE.o NAMSRC.o NAMTAB.o NEXTIN.o NLBLPS.o NXITEM.o \
- X OPRSLT.o POSCH.o PRENUM.o PRNAMF.o PROCES.o PROCOM.o PROIND.o PRTCOM.o \
- X PUTOPA.o PUTOPT.o PUTOUT.o QUOSUB.o READEC.o READSB.o REDEXP.o RANGE.o \
- X REFORM.o RENUMB.o REPNAM.o REPSTR.o REPSUB.o RSTART.o SAMEST.o SECPAS.o SETIMP.o \
- X SETREQ.o SETTYP.o SHUFFL.o SKIPLV.o SKIPTP.o SORTSP.o SPECCT.o SPERUL.o \
- X STADEF.o STSUMM.o SUMMRY.o SUPMOR.o SUPMUL.o TREEST.o TREESU.o TY2TYP.o \
- X URINIT.o URTERM.o USLTYP.o USSALL.o USSBEG.o USSEND.o UTINIT.o UTTERM.o \
- X btest.o ior.o floppy.o
- X
- X
- XINCLUDES = *.h
- X
- X
- X.f.o:
- X $(F77) $(FFLAGS) $<
- X
- Xfloppy: $(OBJS) $(INCLUDES)
- X $(F77) -o $@ $(FFLAGSO) $(OBJS)
- X
- X
- X
- XALLPRO.o: ALLPRO.f PARAM.h ALCAZA.h JOBSUM.h FLAGS.h STATE.h
- XARGTYP.o: ARGTYP.f PARAM.h ALCAZA.h CONDEC.h STATE.h CONDAT.h
- XBINSRC.o: BINSRC.f
- XCHKCHR.o: CHKCHR.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h USSTMT.h USUNIT.h USLTYD.h USIGNO.h \
- X CHECKS.h
- XCHKOBS.o: CHKOBS.f
- XCHRTYP.o: CHRTYP.f CONVEX.h
- XCLASSF.o: CLASSF.f PARAM.h ALCAZA.h CLASS.h FLAGS.h FLWORK.h \
- X CURSTA.h CONVEX.h
- XCOMPAC.o: COMPAC.f PARAM.h ALCAZA.h CURSTA.h STATE.h
- XCOMRUL.o: COMRUL.f CHECKS.h
- XDEFINF.o: DEFINF.f USINFN.h
- XDEFSTA.o: DEFSTA.f PARAM.h USUNIT.h
- XERREX1.o: ERREX1.f PARAM.h
- XEXTRAC.o: EXTRAC.f PARAM.h ALCAZA.h FLAGS.h CURSTA.h STATE.h
- XFILTER.o: FILTER.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h KEYCOM.h
- XFLDUMP.o: FLDUMP.f
- XFLINIT.o: FLINIT.f PARAM.h CURSTA.h FLAGS.h JOBSUM.h STATE.h \
- X KEYCOM.h
- XFLPRNT.o: FLPRNT.f PARAM.h USUNIT.h
- XGETALL.o: GETALL.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h FLWORK.h
- XGETCON.o: GETCON.f CONVEX.h
- XGETINT.o: GETINT.f
- XGETNAM.o: GETNAM.f CONVEX.h
- XGETNBL.o: GETNBL.f
- XGETOPT.o: GETOPT.f
- XGETRNG.o: GETRNG.f PARAM.h ALCAZA.h
- XHEADER.o: HEADER.f PARAM.h
- XINDECO.o: INDECO.f PARAM.h ALCAZA.h STATE.h KEYCOM.h FLAGS.h \
- X FLWORK.h CLASS.h CONDEC.h CONDAT.h
- XINDECS.o: INDECS.f PARAM.h ALCAZA.h KEYCOM.h
- XINDECT.o: INDECT.f PARAM.h KEYCOM.h
- XINDECZ.o: INDECZ.f PARAM.h ALCAZA.h KEYCOM.h FLWORK.h CONDEC.h \
- X CONDAT.h
- XINEXTR.o: INEXTR.f PARAM.h ALCAZA.h STATE.h
- XINLINE.o: INLINE.f PARAM.h CONVEX.h
- XINUSER.o: INUSER.f PARAM.h ALCAZA.h STATE.h KEYCOM.h CONVEX.h
- XISBIT.o: ISBIT.f
- XITBIT.o: ITBIT.f
- XLASTNB.o: LASTNB.f
- XLEXARS.o: LEXARS.f PARAM.h ALCAZA.h TREECOM.h STATE.h CURSTA.h
- XLMERGE.o: LMERGE.f PARAM.h FLWORK.h
- XLSORT.o: LSORT.f PARAM.h
- XMARKST.o: MARKST.f PARAM.h ALCAZA.h CURSTA.h CONVEX.h
- XMATCH.o: MATCH.f CONVEX.h
- XMIXMOD.o: MIXMOD.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USIGNO.h USLIST.h USGCOM.h USSTMT.h USUNIT.h \
- X USARGS.h USLTYD.h STACK.h
- XNAMOVE.o: NAMOVE.f PARAM.h
- XNAMSRC.o: NAMSRC.f
- XNAMTAB.o: NAMTAB.f
- XNEXTIN.o: NEXTIN.f PARAM.h CONVEX.h
- XNLBLPS.o: NLBLPS.f
- XNXITEM.o: NXITEM.f CONVEX.h
- XOPRSLT.o: OPRSLT.f
- XPOSCH.o: POSCH.f
- XPRENUM.o: PRENUM.f PARAM.h ALCAZA.h FLAGS.h CLASS.h STATE.h \
- X KEYCOM.h FLWORK.h
- XPRNAMF.o: PRNAMF.f PARAM.h ALCAZA.h STATE.h
- XPROCES.o: PROCES.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h JOBSUM.h
- XPROCOM.o: PROCOM.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X FLWORK.h STATE.h
- XPROIND.o: PROIND.f PARAM.h ALCAZA.h CLASS.h CURSTA.h STATE.h
- XPRTCOM.o: PRTCOM.f PARAM.h ALCAZA.h STATE.h
- XPUTOPA.o: PUTOPA.f STACK.h
- XPUTOPT.o: PUTOPT.f STACK.h OPPREC.h
- XPUTOUT.o: PUTOUT.f PARAM.h ALCAZA.h FLAGS.h STATE.h JOBSUM.h
- XQUOSUB.o: QUOSUB.f PARAM.h ALCAZA.h FLAGS.h CURSTA.h STATE.h \
- X JOBSUM.h
- XRANGE.o: RANGE.f
- XREADEC.o: READEC.f PARAM.h ALCAZA.h FLAGS.h STATE.h CLASS.h
- XREADSB.o: READSB.f PARAM.h CURSTA.h STATE.h
- XREDEXP.o: REDEXP.f PARAM.h CURSTA.h STACK.h ALCAZA.h USUNIT.h \
- X OPPREC.h
- XREFORM.o: REFORM.f PARAM.h ALCAZA.h FLAGS.h CURSTA.h STATE.h \
- X JOBSUM.h FLWORK.h CLASS.h
- XRENUMB.o: RENUMB.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h JOBSUM.h FLWORK.h CONDEC.h CONDAT.h
- XREPNAM.o: REPNAM.f PARAM.h ALCAZA.h FLAGS.h CURSTA.h STATE.h \
- X KEYCOM.h JOBSUM.h
- XREPSTR.o: REPSTR.f PARAM.h ALCAZA.h FLAGS.h CURSTA.h STATE.h \
- X KEYCOM.h JOBSUM.h
- XREPSUB.o: REPSUB.f PARAM.h ALCAZA.h KEYCOM.h FLWORK.h CONVEX.h
- XRSTART.o: RSTART.f PARAM.h ALCAZA.h CLASS.h FLAGS.h CURSTA.h \
- X STATE.h TREECOM.h
- XSAMEST.o: SAMEST.f PARAM.h ALCAZA.h STATE.h CURSTA.h
- XSECPAS.o: SECPAS.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USIGNO.h USLIST.h USGCOM.h USSTMT.h USUNIT.h \
- X USARGS.h USLTYD.h CHECKS.h
- XSETIMP.o: SETIMP.f PARAM.h ALCAZA.h CONDEC.h FLWORK.h CURSTA.h \
- X TYPDEF.h CONDAT.h
- XSETREQ.o: SETREQ.f
- XSETTYP.o: SETTYP.f PARAM.h ALCAZA.h CLASS.h FLWORK.h FLAGS.h \
- X CURSTA.h STATE.h TYPDEF.h CONDEC.h CONDAT.h
- XSHUFFL.o: SHUFFL.f PARAM.h FLWORK.h
- XSKIPLV.o: SKIPLV.f
- XSKIPTP.o: SKIPTP.f CONVEX.h
- XSORTSP.o: SORTSP.f
- XSPECCT.o: SPECCT.f PARAM.h KEYCOM.h CONVEX.h
- XSPERUL.o: SPERUL.f PARAM.h CHECKS.h USUNIT.h
- XSTADEF.o: STADEF.f PARAM.h ALCAZA.h CLASS.h FLWORK.h CONDEC.h \
- X CONDAT.h
- XSTSUMM.o: STSUMM.f PARAM.h ALCAZA.h FLWORK.h JOBSUM.h CLASS.h
- XSUMMRY.o: SUMMRY.f PARAM.h ALCAZA.h JOBSUM.h STATE.h FLAGS.h
- XSUPMOR.o: SUPMOR.f PARAM.h
- XSUPMUL.o: SUPMUL.f PARAM.h PARAM.h ALCAZA.h TREECOM.h STATE.h \
- X FLAGS.h CLASS.h CURSTA.h
- XTREEST.o: TREEST.f
- XTREESU.o: TREESU.f PARAM.h ALCAZA.h TREECOM.h STATE.h FLAGS.h \
- X CLASS.h CURSTA.h USUNIT.h USARGS.h
- XTY2TYP.o: TY2TYP.f PARAM.h ALCAZA.h CLASS.h STATE.h USINFN.h
- XURINIT.o: URINIT.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USARGS.h
- XURTERM.o: URTERM.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USGCOM.h USCOMN.h USSTMT.h USIGNO.h USUNIT.h \
- X USARGS.h CHECKS.h
- XUSLTYP.o: USLTYP.f
- XUSSALL.o: USSALL.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h
- XUSSBEG.o: USSBEG.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USCOMN.h USSTMT.h USIGNO.h USLIST.h USUNIT.h \
- X USARGS.h USINFN.h USLTYD.h CHECKS.h
- XUSSEND.o: USSEND.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h
- XUTINIT.o: UTINIT.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USIGNO.h USLIST.h USGCOM.h USSTMT.h USUNIT.h \
- X CHECKS.h
- XUTTERM.o: UTTERM.f PARAM.h ALCAZA.h CLASS.h CURSTA.h FLWORK.h \
- X KEYCOM.h TYPDEF.h JOBSUM.h STATE.h FLAGS.h \
- X USIGNO.h USINFN.h CHECKS.h
- X
- X
- XCONVEX.h: CONDEC.h CONDAT.h
- /
- echo 'Part 06 of Floppy complete.'
- exit
-
-
-
-
-
-
-