home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / db3debug.zip / DEBUGGER.PRG < prev    next >
Text File  |  1986-04-29  |  4KB  |  158 lines

  1. *********DEBUGGER.PRG
  2. CLEAR
  3. SET TALK OFF
  4. SET EXACT OFF
  5. SET SAFETY OFF
  6. SET INTENSITY ON
  7. PROGNAME = SPACE(12)
  8. @ 5,5 SAY 'PROGRAM NAME : ' GET PROGNAME
  9. READ
  10. CLEAR
  11. ? 'PLEASE WAIT WHILE I SEARCH FOR THE FILE...'
  12. IF .NOT. '.' $(PROGNAME)
  13.    PROGNAME = TRIM(PROGNAME)+".PRG"
  14. ENDIF
  15. PROGNAME = UPPER(PROGNAME)
  16. FILNAME = SUBSTR(PROGNAME,1,AT(".",PROGNAME)-1)
  17. USE DEBUGGER
  18. ZAP
  19. APPEND FROM &PROGNAME SDF
  20. GO TOP
  21. STORE " " TO ANS
  22. STORE 0 TO DOCASCNT
  23. STORE 0 TO DOWHICNT
  24. STORE 0 TO ENCASCNT
  25. STORE 0 TO ENDDOCNT
  26. STORE 0 TO ENDIFCNT
  27. STORE 0 TO IFCNT
  28. STORE 0 TO INDENT
  29. STORE 0 TO TAB
  30. CLEAR
  31.  
  32. DO WHILE .NOT. EOF()
  33.    MEMVAR = TRIM(LINELOCATE)
  34.    DO WHILE SUBSTR(MEMVAR,1,1) = " "
  35.       MEMVAR = SUBSTR(MEMVAR,2,LEN(MEMVAR)-1)
  36.    ENDDO
  37.    IF MEMVAR = "'" .OR. '"' $MEMVAR .OR. "*" $MEMVAR .OR."(" $MEMVAR
  38.       PLACE = AT(" ",MEMVAR)
  39.       MEMVAR = UPPER(SUBSTR(MEMVAR,1,PLACE))+;
  40.       SUBSTR(MEMVAR,PLACE+1,LEN(MEMVAR)-PLACE+1)
  41.    ELSE
  42.       STORE UPPER(MEMVAR) TO MEMVAR
  43.    ENDIF
  44.    STORE .F. TO ADDONE,NOTADONE
  45.    STORE .F. TO ELSE2,CASE2,TEXT
  46.    DO CASE
  47.       CASE MEMVAR = "CASE" .OR. MEMVAR = "OTHE"
  48.                STORE .T. TO CASE2
  49.       CASE MEMVAR = "DO CASE"
  50.                STORE DOCASCNT +1 TO DOCASCNT
  51.                TAB = 8
  52.                ADDONE = .T.
  53.  
  54.       CASE MEMVAR = "DO WHIL"
  55.            STORE DOWHICNT +1 TO DOWHICNT
  56.            TAB = 3
  57.            ADDONE = .T.è      CASE MEMVAR = "ELSE"
  58.                ELSE2 = .T.   
  59.       CASE MEMVAR = "ENDC"
  60.                STORE ENCASCNT +1 TO ENCASCNT
  61.                INDENT = INDENT -8
  62.  
  63.       CASE MEMVAR = "ENDD"
  64.                STORE ENDDOCNT +1 TO ENDDOCNT
  65.                INDENT = INDENT -3
  66.       CASE MEMVAR = "ENDI"
  67.                STORE ENDIFCNT +1 TO ENDIFCNT
  68.                INDENT = INDENT -3
  69.  
  70.       CASE MEMVAR = "IF "
  71.                STORE IFCNT+1 TO IFCNT
  72.                TAB = 3
  73.                ADDONE = .T.
  74.  
  75.       CASE MEMVAR = "TEXT"
  76.                STORE .T. TO TEXT
  77.    ENDCASE
  78.    REPLACE LINELOCATE WITH SPACE(INDENT)+MEMVAR
  79.    IF ELSE2
  80.           INDENT = INDENT - TAB
  81.           REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
  82.           INDENT = INDENT + TAB
  83.    ENDIF
  84.    IF CASE2
  85.           INDENT = INDENT - 5
  86.           REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
  87.           INDENT = INDENT +5
  88.    ENDIF
  89.    IF ADDONE
  90.           INDENT=INDENT + TAB
  91.    ENDIF
  92.    REPLACE LINELOCATE WITH TRIM(LINELOCATE)
  93.    ? TRIM(LINELOCATE)
  94.    IF TEXT
  95.           SKIP
  96.           DO WHILE .NOT. "ENDT" $(UPPER(LINELOCATE))
  97.               ? TRIM(LINELOCATE)
  98.               SKIP
  99.           ENDDO (MEMVAR # ENDTEXT)
  100.           ELSE
  101.               SKIP
  102.    ENDIF
  103. ENDDO
  104. BAKNAME = FILNAME + ".XXX"
  105. IF FILE(BAKNAME)
  106.        ERASE &BAKNAME
  107. ENDIF (BAKNAME)
  108. RENAME &PROGNAME TO &BAKNAME
  109. COPY TO &PROGNAME DELIM WITH BLANK
  110. CLEAR
  111. ?
  112. ? "DO WHILE STATEMENTS :",DOWHICNT
  113. ? "ENDDO STATEMENTS    :",ENDDOCNTèIF DOWHICNT # ENDDOCNT
  114.        ?? "  <<<--PAIR NOT MATCHED---"
  115. ENDIF (DOWICNT)
  116. ?
  117. ? "IF STATEMENTS       :",IFCNT
  118. ? "ENDIF STATEMENTS    :",ENDIFCNT
  119. IF IFCNT # ENDIFCNT
  120.        ?? "  <<<--PAIR NOT MATCHED---"
  121. ENDIF (IFCNT)
  122. ?
  123. ? "DO CASE STATEMENTS  :",DOCASCNT
  124. ? "ENDCASE STATEMENTS  :",ENCASCNT
  125. IF DOCASCNT # ENCASCNT
  126.        ?? "  <<<--PAIR NOT MATCHED---"
  127. ENDIF (DOCASCNT)
  128. ?
  129. ?
  130. ?
  131. ?
  132. ?
  133. ? " THE DEBUGGED PROGRAM FILE IS NOW STORED UNDER THE NAME &PROGNAME"
  134. ?
  135. ? " THE ORIGINAL PROGRAM FILE IS NOW STORED UNDER THE NAME &BAKNAME"
  136. ? " FOR YOUR EDITING PURPOSES."
  137. ?
  138. @ 20,3
  139. WAIT " WOULD YOU LIKE A HARDCOPY OF DEBUGGED PROGRAM FILE? Y/N" TO ANS
  140. IF ANS <> "Y"
  141.    CLEAR
  142.    RETURN
  143. ENDIF
  144. SET PRINT ON
  145. ?
  146. ? " PROGRAM NAME : "+PROGNAME
  147. ?
  148. GO TOP
  149. DO WHILE .NOT. EOF()
  150.    LIST
  151. ENDDO
  152. EJECT
  153. SET PRINT OFF
  154. SET TALK ON
  155. CLOSE DATABASES
  156. CLEAR
  157. RETURN
  158.