LOCAL lnOldArea, ;
lnOldRec, ;
lnNumSnips, ;
lcTextFileName, ;
lnFileHandle, ;
lnCounter, ;
lcThisLine, ;
laFileTypes[1, 2], ;
lcFileType, ;
lcFileName, ;
lcObject, ;
lcMethod, ;
lcStoredProcFileName, ;
lcStoredProcs
DIMENSION laFileTypes[4, 2]
laFileTypes[1,1] = "FORM"
laFileTypes[1,2] = "SCX"
laFileTypes[2,1] = "CLASS LIBRARY"
laFileTypes[2,2] = "VCX"
laFileTypes[3,1] = "PROGRAM"
laFileTypes[3,2] = "PRG"
laFileTypes[4,1] = "STORED PROCS"
laFileTypes[4,2] = "DBC"
#DEFINE PADDING 15
lnOldArea = SELECT()
lnOldRec = RECNO()
*-- Extract memo strings into array
lnNumSnips = MEMLINES(behindsc.code_to_sh)
*-- create text file handle
lcTextFileName = 'SNIPPETS.TXT'
lnFileHandle = FCREATE(lcTextFileName)
FOR lnCounter = 1 TO lnNumSnips
IF USED("showmeth")
USE IN showmeth
ENDIF
*-- Current line in behindsc.code_to_sh
lcThisLine = ALLT(UPPER(MLINE(behindsc.code_to_sh, lnCounter)))
IF EMPTY(lcThisLine)
LOOP
ENDIF
=FPUTS(lnFileHandle, CRLF + REPLICATE("*", 60))
lcFileName = thisform.GetFileName(lcThisLine)
IF !FILE(lcFileName)
=FPUTS(lnFileHandle, CRLF + lcFileName + LOWERNOTFOUND_LOC)
LOOP
ENDIF
*-- Look up the extension in the laFileTypes array, and return
*-- the full file type description
lcFileType = ;
laFileTypes[ASUBS(laFileTypes, ASCAN(laFileTypes, RIGHT(lcFileName, 3)), 1), 1]
*-- Write file type and name to text file
=FPUTS(lnFileHandle, ;
PADR(lcFileType + ":", PADDING, " ") + LOWER(lcFileName))
*-- Special PRG processing
IF lcFileType = "PROGRAM"
thisform.ExtractPRG(lnFileHandle, lcFileName)
LOOP
ENDIF
lcObject = thisform.GetObject(lcThisLine)
lcMethod = thisform.GetMethod(lcThisLine)
*-- Special stored procedure processing
*-- For now, we assume all stored procs are surrounded by 'FUNC...ENDFUNC'
IF lcFileType = "STORED PROCS"
IF lcObject = "*"
thisform.ExtractAllStoredProcs(@lnFileHandle, lcTextFileName)
ELSE
lcStoredProcFileName = "sproc.txt"
lcStoredProcs = thisform.ProcsToMem(lcStoredProcFileName)
IF AT(",", lcObject) > 0
thisform.ExtractMultiStoredProcs(lnFileHandle, lcObject, lcStoredProcs)
ELSE
thisform.ExtractStoredProc(lnFileHandle, lcObject, lcStoredProcs)
ENDIF
DELETE FILE (lcStoredProcFileName)
ENDIF
LOOP
ENDIF
*-- Open the file containing the method or property we want to extract
USE (lcFileName) AGAIN IN 0 ALIAS showmeth NOUPDATE
SELECT showmeth
*-- Write object name to text file
IF NOT EMPTY(lcObject)
*-- Locate the record in the SCX/VCX
LOCATE FOR UPPER(objname) = lcObject
IF FOUND()
=FPUTS(lnFileHandle, PADR("CLASS:", PADDING, " ") + LOWER(showmeth.class))
=FPUTS(lnFileHandle, PADR("OBJECT:", PADDING, " ") + LOWER(lcObject))
ELSE
=FPUTS(lnFileHandle, PADR("OBJECT:", PADDING, " ") + lcObject + " was not found")
LOOP
ENDIF
ENDIF
IF NOT EMPTY(showmeth.properties)
*-- Extract property value and write it into text file
=FPUTS(lnFileHandle, PADR(CRLF + "PROPERTIES:", PADDING, " "))
thisform.ExtractAllProperties(lnFileHandle)
ENDIF
IF NOT EMPTY(lcMethod)
*-- All Methods
=FPUTS(lnFileHandle, PADR("METHODS:", PADDING, " "))
IF lcMethod = "*"
thisform.ExtractAllMethods(lnFileHandle)
ELSE
IF AT(",", lcMethod) > 0
thisform.ExtractMultiMethods(lnFileHandle, lcMethod)
ELSE
thisform.ExtractMethod(lnFileHandle, lcMethod)
ENDIF
ENDIF
ENDIF
=FPUTS(lnFileHandle, CRLF)
ENDFOR
IF USED("showmeth")
USE IN showmeth
ENDIF
=FCLOSE(lnFileHandle)
CREATE CURSOR viewcode (code M)
APPEND BLANK
APPEND MEMO code FROM (lcTextFileName)
DO FORM viewcode WITH thisform.DataSessionID
USE IN viewcode
IF NOT EMPTY(lnOldArea)
SELECT (lnOldArea)
GOTO lnOldRec
ENDIF
RETURN