home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume12 / ffccc / part11 < prev    next >
Encoding:
Text File  |  1990-05-14  |  40.4 KB  |  1,166 lines

  1. Newsgroups: comp.sources.misc
  2. organization: CERN, Geneva, Switzerland
  3. keywords: fortran
  4. subject: v12i097: Floppy - Fortran Coding Convention Checker Part 11/11
  5. from: julian@cernvax.cern.ch (julian bunn)
  6. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  7.  
  8. Posting-number: Volume 12, Issue 97
  9. Submitted-by: julian@cernvax.cern.ch (julian bunn)
  10. Archive-name: ffccc/part11
  11.  
  12. #!/bin/sh
  13. echo 'Start of Floppy, part 11 of 11:'
  14. echo 'x - ALCAZA.h'
  15. sed 's/^X//' > ALCAZA.h << '/'
  16. X      COMMON/ALCAZA/SCROUT,SSTM,SNAM,SSTA,SSTR,SNEWST(100),SIMA(MXSIMD),
  17. X     1      SNAMES(MXNAME),SCBVAR(MXNAME),SCBNAM(MAXGRP)
  18. X      CHARACTER SCROUT*(MXNMCH),SSTM*(MXSSTM),SNAM*(MXSSTM),
  19. X     1  SSTA*(MDIMST),SSTR*(MDIMST),SNEWST*(MXLINE),SIMA*(MXLINE),  
  20. X     2  SNAMES*(MXNMCH),SCBVAR*(MXNMCH),SCBNAM*(MXNMCH) 
  21. X*IF DEF,NEVER   
  22. X*-----------------------------------------------------------------------
  23. X*--- SCROUT = name of current routine being processed   
  24. X*--- SSTM   = string containing all statement descriptions  
  25. X*--- SNAM   = string containing all statement descriptors   
  26. X*--- SSTA   = string containing the actual statement, col. 7-72 (all)   
  27. X*--- SSTR   = temporary statement buffer during replacement 
  28. X*--- SNEWST = temporary statement image buffer during reformatting  
  29. X*--- SIMA   = string containing one complete routine
  30. X*--- SNAMES = name list for global, routine, and statement names
  31. X*--- SCBVAR = list of c.b. variables in one routine (ACTION(24))
  32. X*--- SCBNAM = list of c.b. names in one routine 
  33. X*-----------------------------------------------------------------------
  34. X*EI 
  35. /
  36. echo 'x - CALCAZA.h'
  37. sed 's/^X//' > CALCAZA.h << '/'
  38. X*IF DEF,NEVER   
  39. X*-----------------------------------------------------------------------
  40. X*--- SCROUT = name of current routine being processed   
  41. X*--- SSTM   = string containing all statement descriptions  
  42. X*--- SNAM   = string containing all statement descriptors   
  43. X*--- SSTA   = string containing the actual statement, col. 7-72 (all)   
  44. X*--- SSTR   = temporary statement buffer during replacement 
  45. X*--- SNEWST = temporary statement image buffer during reformatting  
  46. X*--- SIMA   = string containing one complete routine
  47. X*--- SNAMES = name list for global, routine, and statement names
  48. X*--- SCBVAR = list of c.b. variables in one routine (ACTION(24))
  49. X*--- SCBNAM = list of c.b. names in one routine 
  50. X*-----------------------------------------------------------------------
  51. X*EI 
  52. /
  53. echo 'x - CCONDEC.h'
  54. sed 's/^X//' > CCONDEC.h << '/'
  55. X*IF DEF,NEVER   
  56. X*-----------------------------------------------------------------------
  57. X*---  SBASE   = list of all ccharacters recognized by FLOP. 
  58. X*+++ warning +++ : '{', and '}' are forbidden for users.
  59. X*---  SPCHAR  = list of string replacement characters in flop.  
  60. X*-----------------------------------------------------------------------
  61. X*EI 
  62. /
  63. echo 'x - CCURSTA.h'
  64. sed 's/^X//' > CCURSTA.h << '/'
  65. X*IF DEF,NEVER   
  66. X*-----------------------------------------------------------------------
  67. X*      /CURSTA/    describes the "current" statement
  68. X*                  (after calls to EXTRAC  and CLASSF)  
  69. X*      NCHST      no. of ch. in statement   
  70. X*      NSTREF     no. of corresponding statement in SIMA
  71. X*      NLIMA      no. of corresponding image lines of current stmt. 
  72. X*      IFILTR     flag: = -1 reset for routine, 0 reset for statement,  
  73. X*                          1 do not reset   
  74. X*      NLREF      ref. to n-th corresponding line in SIMA   
  75. X*      ICURCL(1)  class of first part   
  76. X*      ICURCL(2)  class of second part ( if ICURCL(1)=IIF), else ILL
  77. X*      NEWOUT     occupation of SNEWST in lines 
  78. X*      NDUMMY     true dummy argument (to avoid integer overflows)  
  79. X*-----------------------------------------------------------------------
  80. X*EI 
  81. /
  82. echo 'x - CFLWORK.h'
  83. sed 's/^X//' > CFLWORK.h << '/'
  84. X*IF DEF,NEVER   
  85. X*--- IWS    = working space 
  86. X*EI 
  87. /
  88. echo 'x - CHECKS.h'
  89. sed 's/^X//' > CHECKS.h << '/'
  90. X      PARAMETER (MCHEKS=100)
  91. X      COMMON /USCHEK/ LCHECK(MCHEKS),CCHECK(MCHEKS) 
  92. X      LOGICAL LCHECK
  93. X      CHARACTER*80 CCHECK   
  94. /
  95. echo 'x - CJOBSUM.h'
  96. sed 's/^X//' > CJOBSUM.h << '/'
  97. X*IF DEF,NEVER   
  98. X*-----------------------------------------------------------------------
  99. X*    contains the statistical information   
  100. X*       TIME1     starting time in seconds  
  101. X*       TIME2     ending     -        - 
  102. X*       NSTATC    overall statistical information   
  103. X*                    1 = # of lines read
  104. X*                    2 = # of lines written to output file  
  105. X*                    3 = # of statements read   
  106. X*                    4 = # of statements after filters  
  107. X*                    5 = # of statements changed
  108. X*                    6 = # of lines unable to change (length overflow)  
  109. X*                    7 = # of comment lines (including blank lines) 
  110. X*                    8 = # of lines printed 
  111. X*       NFDCLS   no. of times internal class found  
  112. X*                (I,1)  normal, (I,2) behind logical IF 
  113. X*-----------------------------------------------------------------------
  114. X*EI 
  115. /
  116. echo 'x - COMMENT.h'
  117. sed 's/^X//' > COMMENT.h << '/'
  118. X*IF DEF,NEVER   
  119. XC                            FLOPPY 
  120. XC                            ------ 
  121. XC Implementation in FLOP of Fortran Coding Convention Checking  
  122. XC   
  123. XC J.J.Bunn December 1985
  124. XC Version 5 December 1986 for general release   
  125. XC   
  126. X*EI 
  127. /
  128. echo 'x - CONDAT.h'
  129. sed 's/^X//' > CONDAT.h << '/'
  130. X      DATA SBASE/   
  131. X     1' :?!#&$@;><=()+-*/[],.''"{}ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk
  132. X     +lmnopqrstuvwxyz_0123456789%'/
  133. X      DATA SPCHAR/'@&$#?!>'/,SPILL/'{}'/
  134. X*-----------------------------------------------------------------------
  135. X*--- statement function SPECCH = true for special character 
  136. X      SPECCH(SDUMMY)=INDEX(SBASE(2:24),SDUMMY).NE.0 
  137. X     1               .OR.INDEX(SBASE(90:),SDUMMY).NE.0  
  138. X*--- statement function NUMCH = true for numeric character  
  139. X      NUMCH(SDUMMY)=INDEX(SBASE(80:89),SDUMMY).NE.0 
  140. X*--- statement function ALPHCH = true for alphabetic character  
  141. X      ALPHCH(SDUMMY)=INDEX(SBASE(27:79),SDUMMY).NE.0
  142. X*--- statement function ANUMCH = true for alphanumeric character
  143. X      ANUMCH(SDUMMY)=INDEX(SBASE(27:89),SDUMMY).NE.0
  144. X*--- statement function STRGCH = true for string character  
  145. X      STRGCH(SDUMMY)=INDEX(SBASE(3:10),SDUMMY).NE.0 
  146. X*--- statement function for integer value (place) of character  
  147. X      ICVAL(SDUMMY)=INDEX(SBASE(27:89),SDUMMY)  
  148. X*-----------------------------------------------------------------------
  149. /
  150. echo 'x - CONDEC.h'
  151. sed 's/^X//' > CONDEC.h << '/'
  152. X      LOGICAL SPECCH,NUMCH,ALPHCH,ANUMCH,STRGCH 
  153. X      CHARACTER SBASE*91,SPCHAR*7,SPILL*2,SDUMMY*1  
  154. X*IF DEF,NEVER   
  155. X*-----------------------------------------------------------------------
  156. X*---  SBASE   = list of all ccharacters recognized by FLOP. 
  157. X*+++ warning +++ : '{', and '}' are forbidden for users.
  158. X*---  SPCHAR  = list of string replacement characters in flop.  
  159. X*-----------------------------------------------------------------------
  160. X*EI 
  161. /
  162. echo 'x - CONVEX.h'
  163. sed 's/^X//' > CONVEX.h << '/'
  164. X      include 'CONDEC.h' 
  165. X      include 'CONDAT.h' 
  166. /
  167. echo 'x - CTREECOM.h'
  168. sed 's/^X//' > CTREECOM.h << '/'
  169. X*IF DEF,NEVER   
  170. X*-----------------------------------------------------------------------
  171. X*   
  172. X*   CALLER             calling routiine, or entry in it 
  173. X*   CALLED             called routine or function   
  174. X*   CERARG             argument types of caller 
  175. X*   CEDARG             argument types of called 
  176. X*   KODE               type of caller or entry (S/R = blank)
  177. X*   NCALLR             # of callers in this routine 
  178. X*   NCALLD             # of called in this routine  
  179. X*   ICALLR             statement number of CALL 
  180. X*-----------------------------------------------------------------------
  181. X*EI 
  182. /
  183. echo 'x - CTYPDEF.h'
  184. sed 's/^X//' > CTYPDEF.h << '/'
  185. X*IF DEF,NEVER   
  186. X*-----------------------------------------------------------------------
  187. X*   
  188. X*   KVTYPE(I)          current default type for starting character no. I
  189. X*-----------------------------------------------------------------------
  190. X*EI 
  191. /
  192. echo 'x - CURSTA.h'
  193. sed 's/^X//' > CURSTA.h << '/'
  194. X      COMMON/CURSTA/NCHST,NSTREF,NLIMA,IFILTR,NLREF(20),ICURCL(2),  
  195. X     +      NEWOUT,NDUMMY   
  196. X*IF DEF,NEVER   
  197. X*-----------------------------------------------------------------------
  198. X*      /CURSTA/    describes the "current" statement
  199. X*                  (after calls to EXTRAC  and CLASSF)  
  200. X*      NCHST      no. of ch. in statement   
  201. X*      NSTREF     no. of corresponding statement in SIMA
  202. X*      NLIMA      no. of corresponding image lines of current stmt. 
  203. X*      IFILTR     flag: = -1 reset for routine, 0 reset for statement,  
  204. X*                          1 do not reset   
  205. X*      NLREF      ref. to n-th corresponding line in SIMA   
  206. X*      ICURCL(1)  class of first part   
  207. X*      ICURCL(2)  class of second part ( if ICURCL(1)=IIF), else ILL
  208. X*      NEWOUT     occupation of SNEWST in lines 
  209. X*      NDUMMY     true dummy argument (to avoid integer overflows)  
  210. X*-----------------------------------------------------------------------
  211. X*EI 
  212. /
  213. echo 'x - CUSARGS.h'
  214. sed 's/^X//' > CUSARGS.h << '/'
  215. X*IF DEF,NEVER   
  216. X*-----------------------------------------------------------------------
  217. X*   NARGS   = number of arguments passed to current module  
  218. X*   CARGNMi = name of argument i
  219. X*   CARGTYi = type of argument i (EG CHAR80, INTE2) 
  220. X*   NARGDIi = number of dimensions of argument i
  221. X*   CARGDIji= 1) lower bound for jth. dimension of argument i   
  222. X*             2) upper bound for jth. dimension of argument i   
  223. X*   NKALL   = number of CALL statements in module   
  224. X*   CKALLNi = name of subroutine ith. CALLed
  225. X*   KALLIFi = IF level of ith. subroutine CALLed
  226. X*   KALLDOi = DO level of ith. subroutine CALLed
  227. X*-----------------------------------------------------------------------
  228. X*EI 
  229. /
  230. echo 'x - CUSCOMN.h'
  231. sed 's/^X//' > CUSCOMN.h << '/'
  232. X*IF DEF,NEVER   
  233. X*-----------------------------------------------------------------------
  234. X*   NCOMN   = number of variables in all COMMON blocks this routine 
  235. X*   NCOMT   = number of COMMON block titles this routine
  236. X*   SCNAME  = name of variable I
  237. X*   SCTITL  = name of COMMON block J
  238. X*   ICNAME  = pointer to J for name I   
  239. X*   ICTITL  = -(pointer to start of names in SCNAME for COMMON block J) 
  240. X*-----------------------------------------------------------------------
  241. X*EI 
  242. /
  243. echo 'x - CUSGCOM.h'
  244. sed 's/^X//' > CUSGCOM.h << '/'
  245. X*IF DEF,NEVER   
  246. X*-----------------------------------------------------------------------
  247. X*   NGCON   = number of variables in all COMMON blocks all ROUTINES 
  248. X*   NGCOT   = number of COMMON block titles all ROUTINES
  249. X*   SGCNAM  = name of variable I
  250. X*   SGCTIT  = name of COMMON block J
  251. X*   IGCNAM  = pointer to J for name I   
  252. X*   IGCTIT  = -(pointer to start of names in SGCNAM for COMMON block J) 
  253. X*-----------------------------------------------------------------------
  254. X*EI 
  255. /
  256. echo 'x - CUSIGNO.h'
  257. sed 's/^X//' > CUSIGNO.h << '/'
  258. X*IF DEF,NEVER   
  259. X*-----------------------------------------------------------------------
  260. X*   MXIGNV  = Maximum number of variable names to ignore
  261. X*   MUUNIT  = LUN of USER list of variable names to ignore  
  262. X*   NIGNOR  = Number of variable names found
  263. X*   NIGNOS  = Number of subroutine names found  
  264. X*   CIGNOR  = Array of ignorable variable names 
  265. X*   CIGNOS  = Array of ignorable subroutine names   
  266. X*   LIGNOR  = Length of variable name   
  267. X*   LIGNOS  = Length of subroutine name 
  268. X*   GALEPH  = set .TRUE. if special GALEPH processing   
  269. X*   ADAMO   = set .TRUE. if special ADAMO processing
  270. X*   USAGE   = set .TRUE. if check of COMMON variable usage  
  271. X*   UNFLP   = set .TRUE. if NO coding convention checks !   
  272. X*-----------------------------------------------------------------------
  273. X*EI 
  274. /
  275. echo 'x - CUSINFN.h'
  276. sed 's/^X//' > CUSINFN.h << '/'
  277. X*IF DEF,NEVER   
  278. X*-----------------------------------------------------------------------
  279. X*   LIF      = number of intrinsic functions recognised 
  280. X*   CINFUN   = name of intrinsic function   
  281. X*   INFUNG   = "1" if generic, "0" if not   
  282. X*   CTYFUN   = set only for generic types ... gives type of function
  283. X*            = 'I' integer  
  284. X*            = 'R' real 
  285. X*            = 'D' double precision 
  286. X*            = 'K' complex  
  287. X*            = 'L' logical  
  288. X*            = 'C' character
  289. X*            = '$' takes type of argument(s)
  290. X*-----------------------------------------------------------------------
  291. X*EI 
  292. /
  293. echo 'x - CUSLIST.h'
  294. sed 's/^X//' > CUSLIST.h << '/'
  295. X*IF DEF,NEVER   
  296. X*-----------------------------------------------------------------------
  297. X*   USFULL  = set .TRUE. if input file to be printed to MZUNIT  
  298. X*-----------------------------------------------------------------------
  299. X*EI 
  300. /
  301. echo 'x - CUSUNIT.h'
  302. sed 's/^X//' > CUSUNIT.h << '/'
  303. X*IF DEF,NEVER   
  304. X*-----------------------------------------------------------------------
  305. X*   MZUNIT  = logical unit of scratch file  
  306. X*   MJUNIT  = logical unit for customized TREE output   
  307. X*   MSUNIT  = logical unit for specification of rules   
  308. X*-----------------------------------------------------------------------
  309. X*EI 
  310. /
  311. echo 'x - ERREX1.f'
  312. sed 's/^X//' > ERREX1.f << '/'
  313. X      SUBROUTINE ERREX1 
  314. X*-----------------------------------------------------------------------
  315. X*   
  316. X*--- error exit and stop when name buffer overflow  
  317. X*   
  318. X*-----------------------------------------------------------------------
  319. X      include 'PARAM.h' 
  320. X      N=MXNAME  
  321. X      WRITE (MPUNIT,10000) N
  322. X      STOP  
  323. X10000 FORMAT (//' ++++++++++++++++++++++++++++++++++++++++'/
  324. X     +' +                                      +'/  
  325. X     +' +      NAME BUFFER OVERFLOW, STOP      +'/  
  326. X     +' +      ACTUAL SIZE =',I5,T41,'+'/   
  327. X     +' +                                      +'/  
  328. X     +' ++++++++++++++++++++++++++++++++++++++++')  
  329. X      END   
  330. /
  331. echo 'x - FLDUMP.f'
  332. sed 's/^X//' > FLDUMP.f << '/'
  333. X      SUBROUTINE FLDUMP(NUN,N,STRING,NCOUNT)
  334. X*-----------------------------------------------------------------------
  335. X*   
  336. X*--- writes lines onto output file  
  337. X*   
  338. X*--- input  
  339. X*    NUN         output unit
  340. X*    N           # of lines 
  341. X*    STRING      lines  
  342. X*--- input/output   
  343. X*    NCOUNT      counter to be increased by N   
  344. X*   
  345. X*-----------------------------------------------------------------------
  346. X      CHARACTER *(*) STRING(*)  
  347. X      DO 10 I=1,N   
  348. X         WRITE (NUN,'(A)') STRING(I)
  349. X   10 CONTINUE  
  350. X      NCOUNT=NCOUNT+N   
  351. X      END   
  352. /
  353. echo 'x - FLPRNT.f'
  354. sed 's/^X//' > FLPRNT.f << '/'
  355. X      SUBROUTINE FLPRNT(NBLANK,SHEAD,N,STRING,NCOUNT)   
  356. X*-----------------------------------------------------------------------
  357. X*   
  358. X*--- writes lines onto PRINT output file (MPUNIT)   
  359. X*   
  360. X*--- input  
  361. X*    NBLANK      # of blank lines to print in front 
  362. X*    SHEAD       string to be put into header part of line 1
  363. X*    N           # of lines 
  364. X*    STRING      lines  
  365. X*--- input/output   
  366. X*    NCOUNT      counter to be increased by N   
  367. X*   
  368. X*-----------------------------------------------------------------------
  369. X      include 'PARAM.h' 
  370. X      include 'USUNIT.h' 
  371. X      CHARACTER *(*) STRING(*),SHEAD,SLOC*15
  372. X      DO 10 I=1,NBLANK  
  373. X         WRITE (MZUNIT,'('' '')')   
  374. X   10 CONTINUE  
  375. X      SLOC=SHEAD
  376. X      WRITE(MZUNIT,'(1X,A15,A)')  SLOC,STRING(1)
  377. X      DO 20 I=2,N   
  378. X         WRITE (MZUNIT,'(16X,A)') STRING(I) 
  379. X   20 CONTINUE  
  380. X      NCOUNT=NCOUNT+N   
  381. X      END   
  382. /
  383. echo 'x - FLWORK.h'
  384. sed 's/^X//' > FLWORK.h << '/'
  385. X      COMMON/FLWORK/IWS(MXNAME) 
  386. X*IF DEF,NEVER   
  387. X*--- IWS    = working space 
  388. X*EI 
  389. /
  390. echo 'x - GETINT.f'
  391. sed 's/^X//' > GETINT.f << '/'
  392. X      SUBROUTINE GETINT(STRING,ICC1,ICC2,KFCH,KLCH,NN)  
  393. X*-----------------------------------------------------------------------
  394. X*   
  395. X* routine to extract one positive integer from a BCD string.
  396. X* input 
  397. X* STRING   input string 
  398. X* ICC1     starting pos. for scan   
  399. X* ICC2     end      -    -    - 
  400. X* output
  401. X* KFCH     pos. of first character of integer in STRING,
  402. X*          or 0 if no integer found.
  403. X* KLCH     pos. of last ch. in STRING.  
  404. X* NN       integer in integer format. (set to zero when none found) 
  405. X*   
  406. X*-----------------------------------------------------------------------
  407. X      CHARACTER*(*) STRING  
  408. X      NN=0  
  409. X      CALL CHRTYP(1,STRING,ICC1,ICC2,.FALSE.,KFCH,ILEV) 
  410. X      IF(KFCH.NE.0)  THEN   
  411. X         CALL SKIPTP(1,STRING,KFCH,ICC2,.FALSE.,KLCH,ILEV)  
  412. X         NN=NEXTIN(STRING,KFCH,KLCH)
  413. X      ENDIF 
  414. X      END   
  415. /
  416. echo 'x - GETNBL.f'
  417. sed 's/^X//' > GETNBL.f << '/'
  418. X      SUBROUTINE GETNBL(STRING,SNBLK,NN)
  419. X*-----------------------------------------------------------------------
  420. X*   
  421. X*--- extracts non-blank characters  
  422. X*--- input  
  423. X*    STRING     input string - full length taken
  424. X*--- output 
  425. X*    SNBLK      string of non-blank (to max. length)
  426. X*    NN         # of non-blank put in SNBLK 
  427. X*-----------------------------------------------------------------------
  428. X      CHARACTER *(*) STRING,SNBLK,STEMP*1   
  429. X      LUP=LEN(SNBLK)
  430. X      NN=0  
  431. X      DO 10 I=1,LEN(STRING) 
  432. X         STEMP=STRING(I:I)  
  433. X         IF (STEMP.EQ.' ') GOTO 10  
  434. X         IF (NN.EQ.LUP) GOTO 999
  435. X         NN=NN+1
  436. X         SNBLK(NN:NN)=STEMP 
  437. X   10 CONTINUE  
  438. X  999 END   
  439. /
  440. echo 'x - GETRNG.f'
  441. sed 's/^X//' > GETRNG.f << '/'
  442. X      SUBROUTINE GETRNG(IST,LAST,IARR)  
  443. X*-----------------------------------------------------------------------
  444. X*   
  445. X*   Gives positions of '(' and ')' in SSTA (no string check !)  
  446. X*   
  447. X*   Input   
  448. X*   IST     starting position of scan   
  449. X*   LAST    last position of scan   
  450. X*   
  451. X*   Output  
  452. X*   IARR(1)          # of '(...)'   
  453. X*   IARR(2)          pos. of first '('  
  454. X*   IARR(3)          pos. of first ')'  
  455. X*   IARR(4)          pos. of second '(' 
  456. X*                    etc.   
  457. X*-----------------------------------------------------------------------
  458. X      include 'PARAM.h' 
  459. X      include 'ALCAZA.h' 
  460. X      DIMENSION IARR(*) 
  461. X      N=0   
  462. X      IPT=IST-1 
  463. X   10 CONTINUE  
  464. X      IND=INDEX(SSTA(IPT+1:LAST),'(')   
  465. X      IF (IND.EQ.0) GOTO 20 
  466. X      IPT=IPT+IND   
  467. X      CALL SKIPLV(SSTA,IPT+1,LAST,.FALSE.,IND,ILEV) 
  468. X      IF (IND.EQ.0) GOTO 20 
  469. X      N=N+1 
  470. X      IARR(2*N)=IPT 
  471. X      IARR(2*N+1)=IND   
  472. X      IPT=IND   
  473. X      IF (IPT.LT.LAST) GOTO 10  
  474. X   20 CONTINUE  
  475. X      IARR(1)=N 
  476. X      END   
  477. /
  478. echo 'x - HEADER.f'
  479. sed 's/^X//' > HEADER.f << '/'
  480. X      SUBROUTINE HEADER 
  481. X*-----------------------------------------------------------------------
  482. X*   
  483. X*--- prints print output header 
  484. X*   
  485. X*-----------------------------------------------------------------------
  486. X      include 'PARAM.h' 
  487. X      write(mpunit,10000) versio
  488. X10000 format('1 ',78('*'),/,
  489. X     &       '  *',76(' '),'*',/,   
  490. X     &       '  *',30x,'F L O P P Y',35x,'*',/, 
  491. X     &       '  *',76(' '),'*',/,   
  492. X     &       '  *',76(' '),'*',/,   
  493. X     &       '  *',12x, 
  494. X     &       'Fortran Coding Convention Checker and Code Tidier',   
  495. X     &       15x,'*',/  
  496. X     &       '  *',76(' '),'*',/,   
  497. X     &       '  *',30x,'Version ',f3.1,35x,'*',/,   
  498. X     &       '  *',76(' '),'*',/,   
  499. X     &       '  * (c) CERN, 1990',61x,'*',/,
  500. X     &       '  ',78('*'))  
  501. X      END   
  502. /
  503. echo 'x - INDECS.f'
  504. sed 's/^X//' > INDECS.f << '/'
  505. X      SUBROUTINE INDECS(I1,I2,*)
  506. X*-----------------------------------------------------------------------
  507. X*   
  508. X*  Sub-task of routine INDECO.  
  509. X*  Stores string without {} from SSTA(I1:I2) into SKYSTR,   
  510. X*  sets NKYSTR, LKYSTR, KKYSTA, KKYEND. 
  511. X*   
  512. X*-----------------------------------------------------------------------
  513. X      include 'PARAM.h' 
  514. X      include 'ALCAZA.h' 
  515. X      include 'KEYCOM.h' 
  516. X*   
  517. X      L=I2-I1-1 
  518. X      IF(NKYSTR.EQ.MXKNAM.OR.LKYSTR+L.GT.MDIMST)  THEN  
  519. X         WRITE (MPUNIT,10000) NKYSTR,MXKNAM,MDIMST  
  520. X         RETURN 1   
  521. X      ENDIF 
  522. X      NKYSTR=NKYSTR+1   
  523. X      KKYSTA(NKYSTR)=LKYSTR+1   
  524. X      SKYSTR(LKYSTR+1:LKYSTR+L)=SSTA(I1+1:I2-1) 
  525. X      LKYSTR=LKYSTR+L   
  526. X      KKYEND(NKYSTR)=LKYSTR 
  527. X10000 FORMAT(/1X,8('*-*-'),' WARNING - no. of strings in commands =',   
  528. X     +I5,' has reached maximum =',I5/ 33X,  
  529. X     +' or total length has reached maximum =',I5,' rest ignored')  
  530. X      END   
  531. /
  532. echo 'x - INDECT.f'
  533. sed 's/^X//' > INDECT.f << '/'
  534. X      SUBROUTINE INDECT 
  535. X*-----------------------------------------------------------------------
  536. X*   
  537. X*  Checks for invalid string replacement requests, kills them   
  538. X*   
  539. X*-----------------------------------------------------------------------
  540. X      include 'PARAM.h' 
  541. X      include 'KEYCOM.h' 
  542. X*   
  543. X*--- loop over OR-sets (first OR-set is for global commands)
  544. X*--- loop over commands in OR-set   
  545. X      DO 30 ICOM=1,NGLSET   
  546. X*--- loop over strings behind names 
  547. X         DO 10 JNAM=KEYREF(ICOM,5)+1,KEYREF(ICOM,5)+KEYREF(ICOM,4)  
  548. X            CALL INDECZ(KNAMRF(JNAM,1),KNAMRF(JNAM,2))  
  549. X   10    CONTINUE   
  550. X*--- loop over stand-alone strings  
  551. X         DO 20 JSTR=KEYREF(ICOM,7)+1,KEYREF(ICOM,7)+KEYREF(ICOM,6)  
  552. X            CALL INDECZ(KSTREF(JSTR,1),KSTREF(JSTR,2))  
  553. X   20    CONTINUE   
  554. X   30 CONTINUE  
  555. X      END   
  556. /
  557. echo 'x - ISBIT.f'
  558. sed 's/^X//' > ISBIT.f << '/'
  559. X      SUBROUTINE ISBIT(N,I) 
  560. X*-----------------------------------------------------------------------
  561. X*   
  562. X*   Sets the bit I ( 0 < I < 26)  in word N , rightmost = 1 .   
  563. X*   Bits can be tested with ITBIT.  
  564. X*   
  565. X*-----------------------------------------------------------------------
  566. X      DIMENSION NP(26)  
  567. X      SAVE IFIRST
  568. X      DATA IFIRST/0/
  569. X      IF(IFIRST.EQ.0)  THEN 
  570. X         IFIRST=1   
  571. X         NP(1)=1
  572. X         DO 10 J=2,26   
  573. X            NP(J)=2*NP(J-1) 
  574. X   10    CONTINUE   
  575. X      ENDIF 
  576. X      IF(I.GT.0.AND.I.LE.25)  THEN  
  577. X         IF (ITBIT(N,I).EQ.0) N=N+NP(I) 
  578. X      ENDIF 
  579. X      END   
  580. /
  581. echo 'x - ITBIT.f'
  582. sed 's/^X//' > ITBIT.f << '/'
  583. X      FUNCTION ITBIT(N,I)   
  584. X*-----------------------------------------------------------------------
  585. X*   
  586. X*   Tests bit I ( 0 < I < 26)  in word N , rightmost = 1 .  
  587. X*   
  588. X*-----------------------------------------------------------------------
  589. X      DIMENSION NP(26)  
  590. X      SAVE IFIRST
  591. X      DATA IFIRST/0/
  592. X      IF(IFIRST.EQ.0)  THEN 
  593. X         IFIRST=1   
  594. X         NP(1)=1
  595. X         DO 10 J=2,26   
  596. X            NP(J)=2*NP(J-1) 
  597. X   10    CONTINUE   
  598. X      ENDIF 
  599. X      IF(I.GT.0.AND.I.LE.25)  THEN  
  600. X         ITBIT=MOD(N,NP(I+1))/NP(I) 
  601. X      ELSE  
  602. X         ITBIT=0
  603. X      ENDIF 
  604. X      END   
  605. /
  606. echo 'x - JOBSUM.h'
  607. sed 's/^X//' > JOBSUM.h << '/'
  608. X      COMMON/JOBSUM/TIME1,TIME2,NSTATC(10),NFDCLS(MXSTAT,2) 
  609. X*IF DEF,NEVER   
  610. X*-----------------------------------------------------------------------
  611. X*    contains the statistical information   
  612. X*       TIME1     starting time in seconds  
  613. X*       TIME2     ending     -        - 
  614. X*       NSTATC    overall statistical information   
  615. X*                    1 = # of lines read
  616. X*                    2 = # of lines written to output file  
  617. X*                    3 = # of statements read   
  618. X*                    4 = # of statements after filters  
  619. X*                    5 = # of statements changed
  620. X*                    6 = # of lines unable to change (length overflow)  
  621. X*                    7 = # of comment lines (including blank lines) 
  622. X*                    8 = # of lines printed 
  623. X*       NFDCLS   no. of times internal class found  
  624. X*                (I,1)  normal, (I,2) behind logical IF 
  625. X*-----------------------------------------------------------------------
  626. X*EI 
  627. /
  628. echo 'x - LASTNB.f'
  629. sed 's/^X//' > LASTNB.f << '/'
  630. X      FUNCTION LASTNB(STRING,KFCH,KLCH) 
  631. X*-----------------------------------------------------------------------
  632. X*   
  633. X*   Returns as function value the position of the last non-blank in string  
  634. X*   'STRING' between KFCH and KLCH. 
  635. X*   This value is KFCH-1 if STRING consists of blanks only. 
  636. X*   
  637. X*-----------------------------------------------------------------------
  638. X      CHARACTER *(*) STRING 
  639. X      LASTNB=KFCH-1 
  640. X      DO 10 I=KLCH,KFCH,-1  
  641. X         IF(STRING(I:I).NE.' ') THEN
  642. X            LASTNB=I
  643. X            GOTO 999
  644. X         ENDIF  
  645. X   10 CONTINUE  
  646. X  999 END   
  647. /
  648. echo 'x - LEXARS.f'
  649. sed 's/^X//' > LEXARS.f << '/'
  650. X      LOGICAL FUNCTION LEXARS(NNAM) 
  651. X*-----------------------------------------------------------------------
  652. X*   
  653. X*--- returns TRUE if name NNAM in current statement is both in an   
  654. X*    EXTERNAL statement, and is passed as an argument   
  655. X*---Input   
  656. X*   NNAM        position of name in current statement list  
  657. X*-----------------------------------------------------------------------
  658. X      include 'PARAM.h' 
  659. X      include 'ALCAZA.h' 
  660. X      include 'TREECOM.h' 
  661. X      include 'STATE.h' 
  662. X      include 'CURSTA.h' 
  663. X      CHARACTER STEMP*1 
  664. X      LEXARS=.FALSE.
  665. X      IF(NSEND(NNAM).LT.NCHST.AND.NNAM.GT.1)  THEN  
  666. X         DO 10 I=1,NEXEL
  667. X            IF(SNAMES(ISNAME+NNAM).EQ.SEXEL(I)) GOTO 20 
  668. X   10    CONTINUE   
  669. X         GOTO 999   
  670. X   20    CONTINUE   
  671. X         K=NSEND(NNAM)  
  672. X         STEMP=SSTA(K+1:K+1)
  673. X         IF(STEMP.EQ.' ') THEN  
  674. X            STEMP=SSTA(K+2:K+2) 
  675. X         ENDIF  
  676. X         LEXARS=STEMP.NE.'('
  677. X      ENDIF 
  678. X  999 END   
  679. /
  680. echo 'x - LSORT.f'
  681. sed 's/^X//' > LSORT.f << '/'
  682. X      SUBROUTINE LSORT(SLIST,NACC,FLACC,NS) 
  683. X*-----------------------------------------------------------------------
  684. X*   
  685. X*--- sorts a list in itself alphabetically, updates NACC
  686. X*   
  687. X*--- input  
  688. X*    SLIST     list containing all names
  689. X*    NACC      array to be re-arranged with sort
  690. X*    FLACC     if true, NACC is actually updated
  691. X*    NS          # of elements  
  692. X*-----------------------------------------------------------------------
  693. X      include 'PARAM.h' 
  694. X      CHARACTER *(MXNMCH)  SLIST(*),SLOC
  695. X      DIMENSION NACC(*) 
  696. X      LOGICAL ENDFL,FLACC   
  697. X      IF(NS.GT.1)  THEN 
  698. X   10    CONTINUE   
  699. X         ENDFL=.TRUE.   
  700. X         DO 20 I=2,NS   
  701. X            IF (SLIST(I-1).GT.SLIST(I)) THEN
  702. X               ENDFL=.FALSE.
  703. X               SLOC=SLIST(I-1)  
  704. X               SLIST(I-1)=SLIST(I)  
  705. X               SLIST(I)=SLOC
  706. X               IF(FLACC) THEN   
  707. X                  NLOC=NACC(I-1)
  708. X                  NACC(I-1)=NACC(I) 
  709. X                  NACC(I)=NLOC  
  710. X               ENDIF
  711. X            ENDIF   
  712. X   20    CONTINUE   
  713. X         IF (.NOT.ENDFL) GOTO 10
  714. X      ENDIF 
  715. X      END   
  716. /
  717. echo 'x - NAMSRC.f'
  718. sed 's/^X//' > NAMSRC.f << '/'
  719. X      SUBROUTINE NAMSRC(SNAME,SLIST,NLIST,IPOS,LAST)
  720. X*-----------------------------------------------------------------------
  721. X*   
  722. X*   finds name in alphabetic table (binary search). 
  723. X*   
  724. X*   Input   
  725. X*   SNAME           name to be looked up
  726. X*   SLIST           table   
  727. X*   NLIST           length of table 
  728. X*   
  729. X*   Output  
  730. X*   IPOS            = 0: name not in table  
  731. X*                   > 0: position in table  
  732. X*   LAST            for IPOS=0, position behind which name belongs  
  733. X*   
  734. X*-----------------------------------------------------------------------
  735. X      CHARACTER *(*) SNAME,SLIST(*) 
  736. X      IPOS=0
  737. X      LAST=0
  738. X      N=NLIST   
  739. X      IF(N.GT.0)  THEN  
  740. X         KPOS=0 
  741. X   10    M=(N+1)/2  
  742. X         LAST=KPOS+M
  743. X         IF (SNAME.LT.SLIST(LAST))  THEN
  744. X            N=M 
  745. X            LAST=LAST-1 
  746. X            IF (N.GT.1) GOTO 10 
  747. X         ELSEIF (SNAME.GT.SLIST(LAST))  THEN
  748. X            KPOS=LAST   
  749. X            N=N-M   
  750. X            IF (N.GT.0) GOTO 10 
  751. X         ELSE   
  752. X            IPOS=LAST   
  753. X         ENDIF  
  754. X      ENDIF 
  755. X      END   
  756. /
  757. echo 'x - NEXTIN.f'
  758. sed 's/^X//' > NEXTIN.f << '/'
  759. X      FUNCTION NEXTIN(STRING,KFCH,KLCH) 
  760. X*-----------------------------------------------------------------------
  761. X*   
  762. X*   returns as function value the integer extracted from string 
  763. X*   'STRING' between KFCH and KLCH, by ignoring all non-numeric 
  764. X*   characters. default value is therefore 0.   
  765. X*   
  766. X*-----------------------------------------------------------------------
  767. X      include 'PARAM.h' 
  768. X      CHARACTER *(*) STRING 
  769. X      include 'CONVEX.h' 
  770. X      N=0   
  771. X*--- convert external zero into internal
  772. X      NZERO=ICVAL('0')  
  773. X*--- construct integer  
  774. X      DO 10 J=KFCH,KLCH 
  775. X         I=ICVAL(STRING(J:J))-NZERO 
  776. X         IF (I.GE.0.AND.I.LE.9) N=10*N+I
  777. X   10 CONTINUE  
  778. X      NEXTIN=N  
  779. X      END   
  780. /
  781. echo 'x - NLBLPS.f'
  782. sed 's/^X//' > NLBLPS.f << '/'
  783. X      FUNCTION NLBLPS(STRING,KFCH,KLCH) 
  784. X*-----------------------------------------------------------------------
  785. X*   
  786. X*   returns as function value the position of the last blank in string  
  787. X*   'STRING' between KFCH and KLCH. 
  788. X*   This value is KFCH-1 if the first character is not blank.   
  789. X*   
  790. X*-----------------------------------------------------------------------
  791. X      CHARACTER *(*) STRING 
  792. X      NLBLPS=KFCH-1 
  793. X      DO 10 I=KFCH,KLCH 
  794. X         IF (STRING(I:I).NE.' ') GOTO 20
  795. X         NLBLPS=I   
  796. X   10 CONTINUE  
  797. X   20 CONTINUE  
  798. X      END   
  799. /
  800. echo 'x - OPPREC.h'
  801. sed 's/^X//' > OPPREC.h << '/'
  802. X      PARAMETER (LOPS=23)   
  803. X      INTEGER ILEFP(LOPS),IRITP(LOPS),ILENO(LOPS)   
  804. X      CHARACTER*(LOPER) COPER(LOPS) 
  805. X      DATA COPER /'**    ','*     ','/     ','+     ','-     ','//    ',
  806. X     &            '.LT.  ','.GT.  ','.LE.  ','.GE.  ','.EQ.  ','.NE.  ',
  807. X     &            '.NOT. ','.AND. ','.OR.  ','.EQV. ','.NEQV.',':     ',
  808. X     &            ',     ','=     ','(     ',')     ','END   '/ 
  809. X      DATA ILENO /2,1,1,1,1,2,4,4,4,4,4,4,5,5,4,5,6,1,1,1,1,1,3/
  810. XC left precedence of operators  
  811. X      DATA ILEFP /17      ,16      ,16      ,15      ,15      ,14      ,
  812. X     &            13      ,13      ,13      ,13      ,13      ,13      ,
  813. X     &            12      ,11      ,10      ,9       ,9       ,7       ,
  814. X     &            6       ,3       ,4       ,-1      ,2       / 
  815. XC right precedence of operators 
  816. X      DATA IRITP /18      ,16      ,16      ,15      ,15      ,14      ,
  817. X     &            13      ,13      ,13      ,13      ,13      ,13      ,
  818. X     &            12      ,11      ,10      ,9       ,9       ,7       ,
  819. X     &            6       ,3       ,20      ,4       ,2       / 
  820. /
  821. echo 'x - PUTOPA.f'
  822. sed 's/^X//' > PUTOPA.f << '/'
  823. X      SUBROUTINE PUTOPA(SNAME,STYP,ICHR,ICHRE,IERR) 
  824. XC! Put an operand on the stack. 
  825. X      include 'STACK.h' 
  826. X      CHARACTER*(*) SNAME,STYP  
  827. X      NLEVL = NLEVL+1   
  828. X      IF(NLEVL.GT.MLEVL) GOTO 900   
  829. X      CTYP(NLEVL)(:LCTYP) = STYP(:LCTYP)
  830. X      LSN = MAX(0,INDEX(SNAME,' ')-1)   
  831. X      LOPD(NLEVL) = MIN(LSN,LCOPD)  
  832. X      COPD(NLEVL)(:LOPD(NLEVL)) = SNAME(:LOPD(NLEVL))   
  833. X      COPT(NLEVL) = ' ' 
  834. X      IPOS(NLEVL) = 0   
  835. X      IERR = 0  
  836. X      GOTO 999  
  837. X  900 IERR = NLEVL  
  838. X  999 CONTINUE  
  839. X      RETURN
  840. X      END   
  841. /
  842. echo 'x - PUTOUT.f'
  843. sed 's/^X//' > PUTOUT.f << '/'
  844. X      SUBROUTINE PUTOUT 
  845. X*-----------------------------------------------------------------------
  846. X*   
  847. X*   Writes the FORTRAN code output file 
  848. X*   
  849. X*-----------------------------------------------------------------------
  850. X      include 'PARAM.h' 
  851. X      include 'ALCAZA.h' 
  852. X      include 'FLAGS.h' 
  853. X      include 'STATE.h' 
  854. X      include 'JOBSUM.h' 
  855. X      LOGICAL OUTFL 
  856. X      DO 20 I=1,NSTAMM  
  857. X         OUTFL=ACTION(7).AND.IMODIF(I).GT.10.OR.ACTION(8).AND.IMODIF(I).
  858. X     +   GT.0.OR.ACTION(9)  
  859. X         IF (OUTFL)  THEN   
  860. X            DO 10 J=NFLINE(I),NLLINE(I) 
  861. X               IF(ACTION(23)) THEN  
  862. X*--- compressed output = only up to last non-blank written  
  863. X                  NUP=LASTNB(SIMA(J),2,MXLINE)  
  864. X               ELSE 
  865. X                  NUP=MXLINE
  866. X               ENDIF
  867. X               WRITE (MOUNIT,'(A)') SIMA(J)(:NUP)   
  868. X               NSTATC(2)=NSTATC(2)+1
  869. X   10       CONTINUE
  870. X         ENDIF  
  871. X   20 CONTINUE  
  872. X      END   
  873. /
  874. echo 'x - RANGE.f'
  875. sed 's/^X//' > RANGE.f << '/'
  876. X      LOGICAL FUNCTION RANGE(NUMBER,IARRAY) 
  877. X*-----------------------------------------------------------------------
  878. X*   
  879. X*   Purpose:    returns 'TRUE' if NUMBER is contained in ranges given   
  880. X*               in IARRAY.  
  881. X*   
  882. X*   Input:      NUMBER    number to check   
  883. X*               IARRAY    array containing ranges in the following way: 
  884. X*                         word 1 = no. of ranges
  885. X*                         word 2 = lower limit, range 1 
  886. X*                         word 3 = upper limit, range 1   etc.  
  887. X*   
  888. X*   Author :    HG      date: 4.6.84      last revision: 4.6.84 
  889. X*-----------------------------------------------------------------------
  890. X      DIMENSION IARRAY(*)   
  891. X      RANGE=.FALSE. 
  892. X      DO 10 I=1,IARRAY(1)   
  893. X         IF (NUMBER.GE.IARRAY(2*I).AND.NUMBER.LE.IARRAY(2*I+1))  THEN   
  894. X            RANGE=.TRUE.
  895. X            GOTO 999
  896. X         ENDIF  
  897. X   10 CONTINUE  
  898. X  999 END   
  899. /
  900. echo 'x - SAMEST.f'
  901. sed 's/^X//' > SAMEST.f << '/'
  902. X      LOGICAL FUNCTION SAMEST(IST)  
  903. X*-----------------------------------------------------------------------
  904. X*   
  905. X*   Compares statement IST in SIMA with the new image SNEWST, returns   
  906. X*   .TRUE. if they are identical.   
  907. X*   
  908. X*-----------------------------------------------------------------------
  909. X      include 'PARAM.h' 
  910. X      include 'ALCAZA.h' 
  911. X      include 'STATE.h' 
  912. X      include 'CURSTA.h' 
  913. X      SAMEST=.FALSE.
  914. X      N=0   
  915. X      DO 10 I=NFLINE(IST),NLLINE(IST)   
  916. X         IF(NLTYPE(I).NE.0) N=N+1   
  917. X   10 CONTINUE  
  918. X      IF(N.NE.NEWOUT) GOTO 999  
  919. X      N=0   
  920. X      DO 20 I=NFLINE(IST),NLLINE(IST)   
  921. X         IF(NLTYPE(I).NE.0) THEN
  922. X            N=N+1   
  923. X            IF(SNEWST(N)(:72).NE.SIMA(I)(:72)) GOTO 999 
  924. X         ENDIF  
  925. X   20 CONTINUE  
  926. X      SAMEST=.TRUE. 
  927. X  999 END   
  928. /
  929. echo 'x - SETREQ.f'
  930. sed 's/^X//' > SETREQ.f << '/'
  931. X      SUBROUTINE SETREQ 
  932. X      END   
  933. /
  934. echo 'x - SORTSP.f'
  935. sed 's/^X//' > SORTSP.f << '/'
  936. X      SUBROUTINE SORTSP(N1,IARR,N2) 
  937. X*-----------------------------------------------------------------------
  938. X*  Sorts integers, suppresses multiple occurrences  
  939. X*  Input
  940. X*  N1       = no. of integers   
  941. X*  Input/Output 
  942. X*  IARR     = array containing integers 
  943. X*  Output   
  944. X*  N2       = new number of integers
  945. X*-----------------------------------------------------------------------
  946. X      DIMENSION IARR(*) 
  947. X   10 CONTINUE  
  948. X      IND=0 
  949. X      DO 20 J=2,N1  
  950. X         IF (IARR(J).LT.IARR(J-1))  THEN
  951. X            K=IARR(J)   
  952. X            IARR(J)=IARR(J-1)   
  953. X            IARR(J-1)=K 
  954. X            IND=1   
  955. X         ENDIF  
  956. X   20 CONTINUE  
  957. X      IF (IND.NE.0) GOTO 10 
  958. X      N2=MIN(N1,1)  
  959. X      DO 30 J=2,N1  
  960. X         IF (IARR(J).GT.IARR(J-1))  THEN
  961. X            N2=N2+1 
  962. X            IARR(N2)=IARR(J)
  963. X         ENDIF  
  964. X   30 CONTINUE  
  965. X      END   
  966. /
  967. echo 'x - SPERUL.f'
  968. sed 's/^X//' > SPERUL.f << '/'
  969. X      SUBROUTINE SPERUL 
  970. X      include 'PARAM.h' 
  971. X      include 'CHECKS.h' 
  972. X      include 'USUNIT.h' 
  973. X      CHARACTER*3 CDEF,CTMP 
  974. X      WRITE(MPUNIT,100) MCHEKS  
  975. X  100 FORMAT(//,1X,'Interactive Specification of Rules to Check',   
  976. X     &        /,1X,'-------------------------------------------',   
  977. X     &        /,1X,'A maximum of ',I5,' rules may be checked',  
  978. X     &        /,1X,'Answer YES or NO for each rule')
  979. X      DO 1 IRULE=1,MCHEKS   
  980. X        IF(CCHECK(IRULE)(:4).EQ.'$$$$') GOTO 1  
  981. X        WRITE(MPUNIT,'(A,A)') ' ',CCHECK(IRULE) 
  982. X        CDEF = 'NO '
  983. X        IF(LCHECK(IRULE)) CDEF = 'YES'  
  984. X        WRITE(MPUNIT,'(A,A,A)') ' Check this rule ? [CR=',CDEF,']'  
  985. X        READ(MSUNIT,'(A)',END=1,ERR=1) CTMP 
  986. X        IF(CTMP(1:1).EQ.'y'.OR.CTMP(1:1).EQ.'Y') LCHECK(IRULE)=.TRUE.   
  987. X        IF(CTMP(1:1).EQ.'n'.OR.CTMP(1:1).EQ.'N') LCHECK(IRULE)=.FALSE.  
  988. X        IF(CTMP(1:1).EQ.' '.AND.CDEF.EQ.'YES') LCHECK(IRULE)=.TRUE. 
  989. X        IF(CTMP(1:1).EQ.' '.AND.CDEF.EQ.'NO ') LCHECK(IRULE)=.FALSE.
  990. X    1 CONTINUE  
  991. X      RETURN
  992. X      END   
  993. /
  994. echo 'x - STACK.h'
  995. sed 's/^X//' > STACK.h << '/'
  996. X      PARAMETER (MLEVL=100,LCTYP=1,LCOPD=512,LOPER=6)   
  997. X      COMMON /STACK/ CTYP(MLEVL),COPD(MLEVL),COPT(MLEVL)
  998. X      COMMON /STACK1/NLEVL,IPOP(MLEVL),IPOS(MLEVL),LOPD(MLEVL)  
  999. X      CHARACTER*(LCTYP) CTYP
  1000. X      CHARACTER*(LCOPD) COPD
  1001. X      CHARACTER*(LOPER) COPT
  1002. /
  1003. echo 'x - TREECOM.h'
  1004. sed 's/^X//' > TREECOM.h << '/'
  1005. X      COMMON/STREE/CALLER(KENT),CALLED(KALL) ,CERARG(KENT), 
  1006. X     +CEDARG(KALL),KODE(KENT),SARGEL(NOARG),SEXEL(KALL) 
  1007. X      CHARACTER CALLER*(MXNMCH),CALLED* (MXNMCH),CERARG*(NOARG),
  1008. X     +CEDARG*(NOARG),KODE*1,SARGEL*(MXNMCH),SEXEL*(MXNMCH)  
  1009. X      COMMON/TREE/NCALLR,NCALLD,NARGEL,NEXEL,ICALLR(KENT)   
  1010. X*IF DEF,NEVER   
  1011. X*-----------------------------------------------------------------------
  1012. X*   
  1013. X*   CALLER             calling routiine, or entry in it 
  1014. X*   CALLED             called routine or function   
  1015. X*   CERARG             argument types of caller 
  1016. X*   CEDARG             argument types of called 
  1017. X*   KODE               type of caller or entry (S/R = blank)
  1018. X*   SARGEL             list of routine (dummy) arguments
  1019. X*   SEXEL              list of names in EXTERNAL
  1020. X*   NCALLR             # of callers in this routine 
  1021. X*   NCALLD             # of called in this routine  
  1022. X*   ICALLR             statement number of CALL 
  1023. X*-----------------------------------------------------------------------
  1024. X*EI 
  1025. /
  1026. echo 'x - URINIT.f'
  1027. sed 's/^X//' > URINIT.f << '/'
  1028. X      SUBROUTINE URINIT 
  1029. X*-----------------------------------------------------------------------
  1030. X*   
  1031. X*--- user routine initialization
  1032. X*   
  1033. X*-----------------------------------------------------------------------
  1034. X      include 'PARAM.h' 
  1035. X      include 'ALCAZA.h' 
  1036. X      include 'CLASS.h' 
  1037. X      include 'CURSTA.h' 
  1038. X      include 'FLWORK.h' 
  1039. X      include 'KEYCOM.h' 
  1040. X      include 'TYPDEF.h' 
  1041. X      include 'JOBSUM.h' 
  1042. X      include 'STATE.h' 
  1043. X      include 'FLAGS.h' 
  1044. X      include 'USARGS.h' 
  1045. X      CMMNT = '                                                      '  
  1046. X      END   
  1047. /
  1048. echo 'x - USARGS.h'
  1049. sed 's/^X//' > USARGS.h << '/'
  1050. X      PARAMETER (MARGS=50,MARGD=10,MKALL=50,LARC=50)
  1051. X      COMMON /USARGS/ NARGS,CARGNM(MARGS),CARGTY(MARGS), NARGDI(MARGS), 
  1052. X     +CARGDI(MARGD,2,MARGS) 
  1053. X      COMMON /USCOMM/ CMMNT 
  1054. X      COMMON /USCALL/ NKALL,CKALLN(MKALL),KALLIF(MKALL),KALLDO(MKALL)   
  1055. X      CHARACTER*(MXNMCH) CARGNM,CKALLN  
  1056. X      CHARACTER*(LARC) CARGTY,CARGDI,CMMNT  
  1057. /
  1058. echo 'x - USCOMN.h'
  1059. sed 's/^X//' > USCOMN.h << '/'
  1060. X      PARAMETER (MCOMN=500,MCOMT=50)
  1061. X      COMMON /USCOMN/ NCOMN,NCOMT, SCNAME(MCOMN),SCTITL(MCOMT), ICNAME  
  1062. X     +(MCOMN),ICTITL(MCOMT) 
  1063. X      CHARACTER SCNAME*(MXNMCH),SCTITL*(MXNMCH) 
  1064. /
  1065. echo 'x - USGCOM.h'
  1066. sed 's/^X//' > USGCOM.h << '/'
  1067. X      PARAMETER (MGCON=2000,MGCOT=200)  
  1068. X      COMMON /USGCOM/ NGCON,NGCOT, SGCNAM(MGCON),SGCTIT(MGCOT), IGCNAM  
  1069. X     +(MGCON),IGCTIT(MGCOT) 
  1070. X      CHARACTER SGCNAM*(MXNMCH),SGCTIT*(MXNMCH) 
  1071. /
  1072. echo 'x - USIGNO.h'
  1073. sed 's/^X//' > USIGNO.h << '/'
  1074. X      PARAMETER (MXIGNV=50,MXIGNS=50,MUUNIT=15) 
  1075. X      COMMON /USIGNO/ GALEPH,ADAMO,USAGE,UNFLP, 
  1076. X     &                NIGNOR,NIGNOS,
  1077. X     &                CIGNOR(MXIGNV),LIGNOR(MXIGNS),
  1078. X     &                CIGNOS(MXIGNS),LIGNOS(MXIGNS) 
  1079. X      CHARACTER*(MXNMCH) CIGNOR,CIGNOS  
  1080. X      LOGICAL GALEPH,ADAMO,USAGE,UNFLP  
  1081. /
  1082. echo 'x - USINFN.h'
  1083. sed 's/^X//' > USINFN.h << '/'
  1084. X      PARAMETER (LIF=109)   
  1085. X      COMMON /USINFN/ INFUNG(LIF),CINFUN(LIF),CTYFUN(LIF)   
  1086. X      CHARACTER*6 CINFUN
  1087. X      CHARACTER*1 CTYFUN
  1088. /
  1089. echo 'x - USLIST.h'
  1090. sed 's/^X//' > USLIST.h << '/'
  1091. X      COMMON /USLIST/ USFULL
  1092. X      LOGICAL USFULL
  1093. /
  1094. echo 'x - USLTYD.h'
  1095. sed 's/^X//' > USLTYD.h << '/'
  1096. X      LOGICAL LFUNCT,LNSVT,LCOMMN,LDIMEN,LELSE,LGOTO,LPRINT 
  1097. X      LOGICAL LIFF,LWRITE,LPAUSE,LSTOP,LENTRY,LIO,LRETRN
  1098. X      LOGICAL LMODUS,LCHARC,LDECLR,LDATA,LASIGN,LMODUL,LSAVE
  1099. /
  1100. echo 'x - USSALL.f'
  1101. sed 's/^X//' > USSALL.f << '/'
  1102. X      SUBROUTINE USSALL 
  1103. X*-----------------------------------------------------------------------
  1104. X*   
  1105. X*--- user start of each statement (including comments and illegal)  
  1106. X*   
  1107. X*-----------------------------------------------------------------------
  1108. X      include 'PARAM.h' 
  1109. X      include 'ALCAZA.h' 
  1110. X      include 'CLASS.h' 
  1111. X      include 'CURSTA.h' 
  1112. X      include 'FLWORK.h' 
  1113. X      include 'KEYCOM.h' 
  1114. X      include 'TYPDEF.h' 
  1115. X      include 'JOBSUM.h' 
  1116. X      include 'STATE.h' 
  1117. X      include 'FLAGS.h' 
  1118. X      END   
  1119. /
  1120. echo 'x - USSEND.f'
  1121. sed 's/^X//' > USSEND.f << '/'
  1122. X      SUBROUTINE USSEND 
  1123. X*-----------------------------------------------------------------------
  1124. X*   
  1125. X*--- user end of filtered statement 
  1126. X*   
  1127. X*-----------------------------------------------------------------------
  1128. X      include 'PARAM.h' 
  1129. X      include 'ALCAZA.h' 
  1130. X      include 'CLASS.h' 
  1131. X      include 'CURSTA.h' 
  1132. X      include 'FLWORK.h' 
  1133. X      include 'KEYCOM.h' 
  1134. X      include 'TYPDEF.h' 
  1135. X      include 'JOBSUM.h' 
  1136. X      include 'STATE.h' 
  1137. X      include 'FLAGS.h' 
  1138. X      END   
  1139. /
  1140. echo 'x - USSTMT.h'
  1141. sed 's/^X//' > USSTMT.h << '/'
  1142. X      COMMON /USSTMT/ ISGLOB,ICLOLD,NFIOLD,NFAULT,RPROCS
  1143. X      LOGICAL RPROCS
  1144. /
  1145. echo 'x - USUNIT.h'
  1146. sed 's/^X//' > USUNIT.h << '/'
  1147. X      PARAMETER (MZUNIT=99,MJUNIT=50,MSUNIT=55) 
  1148. /
  1149. echo 'x - btest.f'
  1150. sed 's/^X//' > btest.f << '/'
  1151. X      logical function btest(n,i)
  1152. X      btest = .false.
  1153. X      if(itbit(n,i+1).ne.0) btest = .true.
  1154. X      end
  1155. /
  1156. echo 'x - ior.f'
  1157. sed 's/^X//' > ior.f << '/'
  1158. X      integer function ior(i,j)
  1159. X      ior = or(i,j)
  1160. X      end
  1161. /
  1162. echo 'Part 11 of Floppy complete.'
  1163. exit
  1164.  
  1165.  
  1166.