home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / fortran / toolpack.000 / toolpack / toolpack1.2 / tools / istds / ISTDS.MAC.f < prev   
Encoding:
Text File  |  1989-03-04  |  5.4 KB  |  163 lines

  1. C---------------------------------------------------------
  2. C    TOOLPACK/1    Release: 3.1
  3. C---------------------------------------------------------
  4.         PROGRAM ISTDS
  5. C ----------------------------------------------------------------------
  6. C
  7. C       I S T D S   -   Toolpack Declaration Standardiser
  8. C
  9. C       Malcolm Cohen, NAG Central Office, 1985.
  10. C
  11. C       This program does one of two things:
  12. C           (1) Rebuild the declarative part of a  program completely.
  13. C           (2) Declare the types of all implicitly typed variables.
  14. C
  15. C       Program Structure (Module Tree):
  16. C       --------------------------------
  17. C
  18. C       ISTDS
  19. C               NAMES
  20. C               DSOPT
  21. C               DS
  22. C                       SRTIDX
  23. C                               LESS
  24. C                       PROPU1
  25. C                               REMUNU
  26. C                               SEC
  27. C                               EXISTS
  28. C                               DMPALL
  29. C                                       EXISTS
  30. C                                       PUTHDR
  31. C                                       OUTDEC*
  32. C                                       PUTEOS
  33. C                               PUTHDR
  34. C                               PTDEC
  35. C                               PUTEOS
  36. C                       PROPU2
  37. C                               SEC
  38. C                               EXISTS
  39. C                                       EXIUND
  40. C                               PUTHDR
  41. C                               OUTDEC*
  42. C                               PUTEOS
  43. C       ... Module OUTDEC:
  44. C
  45. C       OUTDEC*
  46. C               OUTLST
  47. C               OUTPAR
  48. C               OUTSAV
  49. C               OUTCMN
  50. C               OUTSD
  51. C               OUTUND
  52. C               OUTSPC
  53. C
  54.  
  55.         INTEGER TREPTH(81),SYMPTH(81),CMIPTH(81),
  56.      +          CMTPTH(81),TKOPTH(81),CMOPTH(81),
  57.      +          OPTSTR(81),NERROR,NWARN,IODTRE,IODSYM,IODCMI,
  58.      +          IODCMT,IODTKO,IODCMO
  59.  
  60.         INTEGER GETARG,OPEN,CREATE,ZTKPTI,ZYINCI
  61.         EXTERNAL ZINIT,GETARG,OPEN,CREATE,ZYINPT,ZYINSY,ZMESS,ZQUIT,
  62.      +           ZCHOUT,ZPTINT,PUTC,ZYINCI,CLOSE,ZTKPTI,ERROR
  63.  
  64.         CALL ZINIT
  65.  
  66.         IF (GETARG(1,TREPTH,81).EQ.-100) CALL DSARGS(1,TREPTH)
  67.         IF (GETARG(2,SYMPTH,81).EQ.-100) CALL DSARGS(2,SYMPTH)
  68.         IF (GETARG(3,CMIPTH,81).EQ.-100) CALL DSARGS(3,CMIPTH)
  69.         IF (GETARG(4,CMTPTH,81).EQ.-100) CALL DSARGS(4,CMTPTH)
  70.         IF (GETARG(5,TKOPTH,81).EQ.-100) CALL DSARGS(5,TKOPTH)
  71.         IF (GETARG(6,CMOPTH,81).EQ.-100) CALL DSARGS(6,CMOPTH)
  72.         IF (GETARG(7,OPTSTR,81).EQ.-100) CALL DSARGS(7,OPTSTR)
  73.  
  74.         IODTRE=OPEN(TREPTH,0)
  75.         IF (IODTRE.EQ.-1) CALL ERROR('Can''t open tree path')
  76.         IODSYM=OPEN(SYMPTH,0)
  77.         IF (IODSYM.EQ.-1) CALL ERROR('Can''t open symbol path')
  78.         IODCMI=OPEN(CMIPTH,0)
  79.         IF (IODCMI.EQ.-1) CALL ERROR('Can''t open comment index')
  80.         IODCMT=OPEN(CMTPTH,0)
  81.         IF (IODCMT.EQ.-1) CALL ERROR('Can''t open old comment file')
  82.         IODTKO=CREATE(TKOPTH,1)
  83.         IF (IODTKO.EQ.-1) CALL ERROR('Can''t create token stream')
  84.         IODCMO=CREATE(CMOPTH,1)
  85.         IF (IODCMO.EQ.-1) CALL ERROR('Can''t create new comment file')
  86.  
  87.         CALL ZYINPT(IODTRE)
  88.         CALL CLOSE(IODTRE)
  89.         CALL ZYINSY(IODSYM)
  90.         CALL CLOSE(IODSYM)
  91.         IF (ZYINCI(IODCMI).NE.-2) CALL ERROR('ZYINCI failed')
  92.  
  93.         CALL DS(OPTSTR,IODCMT,ZTKPTI(1,IODTKO,IODCMO),NERROR,NWARN)
  94.  
  95.         IF (NERROR+NWARN.EQ.0) THEN
  96.             CALL ZMESS('[ISTDS Normal Termination]',1)
  97.             CALL ZQUIT(-2)
  98.         ELSE IF (NERROR.EQ.0) THEN
  99.             CALL ZCHOUT('[ISTDS Terminated with ',1)
  100.             CALL ZPTINT(NWARN,1,1)
  101.             CALL ZCHOUT(' war'//'ning',1)
  102.             IF (NWARN.GT.1) CALL PUTC(115)
  103.             CALL ZMESS(']',1)
  104.             CALL ZQUIT(-1002)
  105.         ELSE
  106.             CALL ZCHOUT('[ISTDS Error Terminated, ',1)
  107.             CALL ZPTINT(NERROR,1,1)
  108.             CALL ZCHOUT(' er'//'ror',1)
  109.             IF (NERROR.GT.1) CALL PUTC(115)
  110.             CALL ZMESS(' found]',1)
  111.             CALL ZQUIT(-1)
  112.         END IF
  113.  
  114.         END
  115. C ----------------------------------------------------------------------
  116. C
  117. C       D S A R G S   -   Input ISTDS command arguments from user
  118. C
  119.  
  120.         SUBROUTINE DSARGS(NUMBER,PATH)
  121.         INTEGER NUMBER,PATH(*)
  122.  
  123.         INTEGER PROMPT(24,7),I
  124.  
  125.         SAVE PROMPT
  126.  
  127.         INTEGER ZGTCMD
  128.         EXTERNAL ZPRMPT,ZGTCMD
  129.  
  130. C "Input parse tree: "
  131. C "Input symbol table: "
  132. C "Input comment index: "
  133. C "Input comment stream: "
  134. C "Output token stream: "
  135. C "Output comment stream: "
  136. C "Processing Options: "
  137.  
  138.         DATA (PROMPT(I,1),I=1,19)/73,110,112,117,116,32,112,
  139.      +97,114,115,101,32,116,114,101,101,58,32,129/,
  140.      +       (PROMPT(I,2),I=1,21)/73,110,112,117,116,32,115,
  141.      +121,109,98,111,108,32,116,97,98,108,101,58,
  142.      +32,129/,
  143.      +       (PROMPT(I,3),I=1,22)/73,110,112,117,116,32,
  144.      +99,111,109,109,101,110,116,32,105,110,100,101,120,
  145.      +58,32,129/,
  146.      +       (PROMPT(I,4),I=1,23)/73,110,112,117,116,32,
  147.      +99,111,109,109,101,110,116,32,115,116,114,101,97,
  148.      +109,58,32,129/,
  149.      +       (PROMPT(I,5),I=1,22)/79,117,116,112,117,116,32,
  150.      +116,111,107,101,110,32,115,116,114,101,97,109,
  151.      +58,32,129/,
  152.      +       (PROMPT(I,6),I=1,24)/79,117,116,112,117,116,32,
  153.      +99,111,109,109,101,110,116,32,115,116,114,101,97,
  154.      +109,58,32,129/,
  155.      +       (PROMPT(I,7),I=1,21)/80,114,111,99,101,115,115,
  156.      +105,110,103,32,79,112,116,105,111,110,115,58,
  157.      +32,129/
  158.  
  159.         CALL ZPRMPT(PROMPT(1,NUMBER))
  160.         I=ZGTCMD(PATH,0)
  161.  
  162.         END
  163.