home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / debugger.zip / DEBUGGER.PRG < prev    next >
Text File  |  1988-01-27  |  4KB  |  161 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
  114. *
  115. IF DOWHICNT <> ENDDOCNT
  116. *èIF DOWHICNT # ENDDOCNT
  117.    ?? "  <<<--PAIR NOT MATCHED---"
  118. ENDIF (DOWICNT)
  119. ?
  120. ? "IF STATEMENTS       :",IFCNT
  121. ? "ENDIF STATEMENTS    :",ENDIFCNT
  122. IF IFCNT # ENDIFCNT
  123.    ?? "  <<<--PAIR NOT MATCHED---"
  124. ENDIF (IFCNT)
  125. ?
  126. ? "DO CASE STATEMENTS  :",DOCASCNT
  127. ? "ENDCASE STATEMENTS  :",ENCASCNT
  128. IF DOCASCNT # ENCASCNT
  129.    ?? "  <<<--PAIR NOT MATCHED---"
  130. ENDIF (DOCASCNT)
  131. ?
  132. ?
  133. ?
  134. ?
  135. ?
  136. ? " THE DEBUGGED PROGRAM FILE IS NOW STORED UNDER THE NAME &PROGNAME"
  137. ?
  138. ? " THE ORIGINAL PROGRAM FILE IS NOW STORED UNDER THE NAME &BAKNAME"
  139. ? " FOR YOUR EDITING PURPOSES."
  140. ?
  141. @ 20,3
  142. WAIT " WOULD YOU LIKE A HARDCOPY OF DEBUGGED PROGRAM FILE? Y/N" TO ANS
  143. IF ANS <> "Y"
  144.    CLEAR
  145.    RETURN
  146. ENDIF
  147. SET PRINT ON
  148. ?
  149. ? " PROGRAM NAME : "+PROGNAME
  150. ?
  151. GO TOP
  152. DO WHILE .NOT. EOF()
  153.    LIST
  154. ENDDO
  155. EJECT
  156. SET PRINT OFF
  157. SET TALK ON
  158. CLOSE DATABASES
  159. CLEAR
  160. RETURN
  161.