diff --git a/.gitignore b/.gitignore index ff19222..5a9f4c7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,6 @@ log.txt Thumbs.db Desktop.ini bash.exe.stackdump + +# Setari locale Claude Code (specifice masinii, nu proiectului) +.claude/ diff --git a/programe/export_database.prg b/programe/export_database.prg new file mode 100644 index 0000000..3fd0e17 --- /dev/null +++ b/programe/export_database.prg @@ -0,0 +1,435 @@ +*-- Program pentru exportul listei de view-uri din Oracle in XLSX +*-- Foloseste ExcelXML pentru crearea fisierelor Excel fara automatizare +*-- Presupune ca exista gnHandle (connection handle) si goExecutor cu metoda oExecuta +Local lcOutputFile, lcOutputPath, llSucces + +llSucces = .F. +lcOutputPath = GETDIR("C:\","Alegeti directorul pentru salvarea exportului","Director salvare export",64) +IF EMPTY(m.lcOutputPath) + RETURN m.llSucces +ENDIF +lcOutputFile = m.lcOutputPath + "roa_export.xlsx" +llSucces = ExportOracleViewsToXLSX("vact,vbal,vbalana,vbalanta_parteneri,vireg_parteneri,vjv2013,vjc2013", m.lcOutputFile) + +RETURN m.llSucces +*----------------------------------------------------------- +*-- Export direct in XLSX folosind ExcelXML +*----------------------------------------------------------- +Procedure ExportOracleViewsToXLSX + Parameters pcCursorName, pcOutputFile + Local lcOutputFile, llSuccess, loExcelXML + Local lnRecCount, lcLog, lcLogLevel + + *-- Initializeaza log-ul + lcLog = "" + lcLogLevel = "INFO" + + *-- Verifica daca cursorul exista sau foloseste lista existenta + If Empty(pcCursorName) + pcCursorName = "curViews" && Presupune ca ai deja o lista de view-uri + Endif + + lcLog = lcLog + "[" + Time() + "] Verificare cursor: " + pcCursorName + Chr(13) + Chr(10) + + If !Used(pcCursorName) + lcLog = lcLog + "[" + Time() + "] EROARE: Cursorul '" + pcCursorName + "' nu exista!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Asigura-te ca ai o lista de view-uri incarcata." + Chr(13) + Chr(10) + lcLogLevel = "ERROR" + MessageBox(lcLog, 16, "Log Export - Eroare") + Return .F. + Endif + + *-- Selecteaza cursorul si verifica datele + Select (pcCursorName) + lnRecCount = Reccount() + lcLog = lcLog + "[" + Time() + "] Cursor selectat. Inregistrari gasite: " + Transform(lnRecCount) + Chr(13) + Chr(10) + + If lnRecCount = 0 + lcLog = lcLog + "[" + Time() + "] AVERTISMENT: Nu exista inregistrari de exportat." + Chr(13) + Chr(10) + lcLogLevel = "WARNING" + AMessageBox(lcLog, 64, "Log Export - Avertisment") + Return .T. + Endif + + *-- Determina fisierul de iesire + If Empty(pcOutputFile) + lcOutputFile = Putfile("Salveaza lista view-urilor Oracle", "oracle_views.xlsx", "XLSX") + If Empty(lcOutputFile) + lcLog = lcLog + "[" + Time() + "] Export anulat de utilizator." + Chr(13) + Chr(10) + AMessageBox(lcLog, 64, "Log Export - Anulat") + Return .F. + Endif + Else + lcOutputFile = pcOutputFile + Endif + + *-- Asigura-te ca extensia este .xlsx + If Upper(Right(lcOutputFile, 4)) <> "XLSX" + lcOutputFile = Forceext(lcOutputFile, "xlsx") + Endif + + lcLog = lcLog + "[" + Time() + "] Fisier destinatie: " + lcOutputFile + Chr(13) + Chr(10) + + Try + lcLog = lcLog + "[" + Time() + "] Creare obiect ExcelXML..." + Chr(13) + Chr(10) + + *-- Creeaza obiectul ExcelXML + loExcelXML = Createobject("ExcelXML") + + If Type("loExcelXML") <> "O" + lcLog = lcLog + "[" + Time() + "] EROARE: Nu s-a putut crea obiectul ExcelXML!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Verifica daca ExcelXML este inclus corect in proiect." + Chr(13) + Chr(10) + lcLogLevel = "ERROR" + AMessageBox(lcLog, 16, "Log Export - Eroare") + Return .F. + Endif + + lcLog = lcLog + "[" + Time() + "] Obiect ExcelXML creat cu succes." + Chr(13) + Chr(10) + + *-- Configureaza proprietatile pentru formatare + lcLog = lcLog + "[" + Time() + "] Configurare proprietati ExcelXML..." + Chr(13) + Chr(10) + + With loExcelXML + .ColumnHeaderBackgroundColor = "DDDDDD" && Gri deschis pentru header + .ColumnHeaderForeColor = "000000" && Text negru + .WorksheetName = "Oracle Views" && Numele foii de lucru + .Author = "Visual FoxPro Export" && Autorul documentului + Endwith + + *-- Exporta cursorul la Excel XML + Select (pcCursorName) + Go Top + + lcLog = lcLog + "[" + Time() + "] Incepere export la XML..." + Chr(13) + Chr(10) + + *-- Creeaza fisierul XML temporar + Local lcTempXmlFile + lcTempXmlFile = Forceext(lcOutputFile, "xml") + + *-- Exporta la XML cu header + loExcelXML.TableToExcel(lcTempXmlFile, "", .T.) && .T. pentru a include header-ul + + lcLog = lcLog + "[" + Time() + "] Export XML completat: " + lcTempXmlFile + Chr(13) + Chr(10) + + *-- Converteste XML la XLSX + lcLog = lcLog + "[" + Time() + "] Conversie XML la XLSX..." + Chr(13) + Chr(10) + + *-- Parametrii: (Filename, FileFormat, OpenAfterExporting) + *-- FileFormat: 51 = xlOpenXMLWorkbook (XLSX) + loExcelXML.ConvertXmlToXlsx(lcTempXmlFile, 51, .F.) + + *-- Muta fisierul XLSX la locatia dorita + Local lcGeneratedXlsx + lcGeneratedXlsx = Forceext(lcTempXmlFile, "xlsx") + + If File(lcGeneratedXlsx) And lcGeneratedXlsx <> lcOutputFile + lcLog = lcLog + "[" + Time() + "] Mutare fisier de la " + lcGeneratedXlsx + " la " + lcOutputFile + Chr(13) + Chr(10) + Copy File (lcGeneratedXlsx) To (lcOutputFile) + Delete File (lcGeneratedXlsx) + Endif + + *-- Sterge fisierul XML temporar + If File(lcTempXmlFile) + lcLog = lcLog + "[" + Time() + "] Stergere fisier temporar XML." + Chr(13) + Chr(10) + Delete File (lcTempXmlFile) + Endif + + lcLog = lcLog + "[" + Time() + "] Export XLSX completat cu succes!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Fisier final: " + lcOutputFile + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Total inregistrari exportate: " + Transform(lnRecCount) + Chr(13) + Chr(10) + + llSuccess = .T. + lcLogLevel = "SUCCESS" + + Catch To loError + lcLog = lcLog + "[" + Time() + "] EROARE CRITICA in export!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Mesaj: " + loError.Message + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Linia: " + Transform(loError.Lineno) + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Procedura: " + loError.Procedure + Chr(13) + Chr(10) + llSuccess = .F. + lcLogLevel = "ERROR" + + Finally + *-- Cleanup + If Type("loExcelXML") = "O" + lcLog = lcLog + "[" + Time() + "] Cleanup obiect ExcelXML." + Chr(13) + Chr(10) + loExcelXML = Null + Endif + + Endtry + + *-- Afiseaza log-ul final + Local lnIcon + Do Case + Case lcLogLevel = "ERROR" + lnIcon = 16 + Case lcLogLevel = "WARNING" + lnIcon = 48 + Case lcLogLevel = "SUCCESS" + lnIcon = 64 + Otherwise + lnIcon = 64 + Endcase + + AMessageBox(lcLog, lnIcon, "Log Export Oracle Views - " + lcLogLevel) + + *-- Intreaba daca vrea sa deschida fisierul doar daca exportul a reusit + If llSuccess And File(lcOutputFile) + If AMessageBox("Vrei sa deschizi fisierul exportat?", 36, "Deschide fisierul") = 6 + Run /N EXPLORER "&lcOutputFile" + Endif + Endif + + Return llSuccess +Endproc + +*----------------------------------------------------------- +*-- Export direct in XML (daca nu vrei XLSX) +*----------------------------------------------------------- +Procedure ExportOracleViewsToXML + Parameters pcCursorName, pcOutputFile + Local lcOutputFile, llSuccess, loExcelXML + Local lcLog, lcLogLevel + + *-- Initializeaza log-ul + lcLog = "" + lcLogLevel = "INFO" + + If Empty(pcCursorName) + pcCursorName = "curViews" + Endif + + lcLog = lcLog + "[" + Time() + "] Verificare cursor pentru export XML: " + pcCursorName + Chr(13) + Chr(10) + + If !Used(pcCursorName) + lcLog = lcLog + "[" + Time() + "] EROARE: Cursorul '" + pcCursorName + "' nu exista!" + Chr(13) + Chr(10) + lcLogLevel = "ERROR" + AMessageBox(lcLog, 16, "Log Export XML - Eroare") + Return .F. + Endif + + Select (pcCursorName) + Local lnRecCount + lnRecCount = Reccount() + lcLog = lcLog + "[" + Time() + "] Inregistrari gasite: " + Transform(lnRecCount) + Chr(13) + Chr(10) + + If lnRecCount = 0 + lcLog = lcLog + "[" + Time() + "] AVERTISMENT: Nu exista inregistrari de exportat." + Chr(13) + Chr(10) + lcLogLevel = "WARNING" + AMessageBox(lcLog, 64, "Log Export XML - Avertisment") + Return .T. + Endif + + If Empty(pcOutputFile) + lcOutputFile = Putfile("Salveaza in Excel XML", "oracle_views.xml", "XML") + If Empty(lcOutputFile) + lcLog = lcLog + "[" + Time() + "] Export XML anulat de utilizator." + Chr(13) + Chr(10) + AMessageBox(lcLog, 64, "Log Export XML - Anulat") + Return .F. + Endif + Else + lcOutputFile = pcOutputFile + Endif + + lcLog = lcLog + "[" + Time() + "] Fisier destinatie XML: " + lcOutputFile + Chr(13) + Chr(10) + + Try + lcLog = lcLog + "[" + Time() + "] Creare obiect ExcelXML pentru export XML..." + Chr(13) + Chr(10) + + loExcelXML = Createobject("ExcelXML") + + If Type("loExcelXML") <> "O" + lcLog = lcLog + "[" + Time() + "] EROARE: Nu s-a putut crea obiectul ExcelXML!" + Chr(13) + Chr(10) + lcLogLevel = "ERROR" + AMessageBox(lcLog, 16, "Log Export XML - Eroare") + Return .F. + Endif + + *-- Configureaza proprietatile + lcLog = lcLog + "[" + Time() + "] Configurare proprietati pentru XML..." + Chr(13) + Chr(10) + + With loExcelXML + .ColumnHeaderBackgroundColor = "CCCCCC" + .ColumnHeaderForeColor = "000000" + .WorksheetName = "Oracle Views" + .Author = "Visual FoxPro Export" + Endwith + + *-- Exporta cursorul + Select (pcCursorName) + Go Top + + lcLog = lcLog + "[" + Time() + "] Incepere export la fisier XML..." + Chr(13) + Chr(10) + + loExcelXML.TableToExcel(lcOutputFile, "", .T.) && .T. pentru a include header-ul + + lcLog = lcLog + "[" + Time() + "] Export XML completat cu succes!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Fisier creat: " + lcOutputFile + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Total inregistrari exportate: " + Transform(lnRecCount) + Chr(13) + Chr(10) + + llSuccess = .T. + lcLogLevel = "SUCCESS" + + Catch To loError + lcLog = lcLog + "[" + Time() + "] EROARE la exportul XML!" + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Mesaj: " + loError.Message + Chr(13) + Chr(10) + lcLog = lcLog + "[" + Time() + "] Linia: " + Transform(loError.Lineno) + Chr(13) + Chr(10) + llSuccess = .F. + lcLogLevel = "ERROR" + + Finally + If Type("loExcelXML") = "O" + lcLog = lcLog + "[" + Time() + "] Cleanup obiect ExcelXML." + Chr(13) + Chr(10) + loExcelXML = Null + Endif + + Endtry + + *-- Afiseaza log-ul final + Local lnIcon + Do Case + Case lcLogLevel = "ERROR" + lnIcon = 16 + Case lcLogLevel = "WARNING" + lnIcon = 48 + Case lcLogLevel = "SUCCESS" + lnIcon = 64 + Otherwise + lnIcon = 64 + Endcase + + AMessageBox(lcLog, lnIcon, "Log Export XML - " + lcLogLevel) + + Return llSuccess +Endproc + +*----------------------------------------------------------- +*-- Exemplu de utilizare cu lista ta existenta de view-uri +*----------------------------------------------------------- +Procedure TestExportViews + Local llSuccess + + *-- Presupune ca ai deja un cursor cu view-urile incarcat + *-- Exemplu: ai un cursor numit "myViews" cu campurile: + *-- owner, view_name, text_length, view_type, last_analyzed + + *-- Test export XLSX + llSuccess = ExportOracleViewsToXLSX("myViews", "C:\temp\test_views.xlsx") + If llSuccess + ? "Export XLSX reusit!" + Else + ? "Export XLSX esuat!" + Endif + + *-- Test export XML + llSuccess = ExportOracleViewsToXML("myViews", "C:\temp\test_views.xml") + If llSuccess + ? "Export XML reusit!" + Else + ? "Export XML esuat!" + Endif + +Endproc "O" +lcLog = lcLog + "[" + Time() + "] Cleanup obiect ExcelXML." + Chr(13) + Chr(10) +loExcelXML = Null +Endif + +Endtry + +*-- Afiseaza log-ul final +Local lnIcon +Do Case + Case lcLogLevel = "ERROR" + lnIcon = 16 + Case lcLogLevel = "WARNING" + lnIcon = 48 + Case lcLogLevel = "SUCCESS" + lnIcon = 64 + Otherwise + lnIcon = 64 +Endcase + +AMessageBox(lcLog, lnIcon, "Log Export XML - " + lcLogLevel) + +Return llSuccess +Endproc + +*----------------------------------------------------------- +*-- Exemplu de utilizare cu lista ta existenta de view-uri +*----------------------------------------------------------- +Procedure TestExportViews + Local llSuccess + + *-- Presupune ca ai deja un cursor cu view-urile incarcat + *-- Exemplu: ai un cursor numit "myViews" cu campurile: + *-- owner, view_name, text_length, view_type, last_analyzed + + *-- Test export XLSX + llSuccess = ExportOracleViewsToXLSX("myViews", "C:\temp\test_views.xlsx") + If llSuccess + ? "Export XLSX reusit!" + Else + ? "Export XLSX esuat!" + Endif + + *-- Test export XML + llSuccess = ExportOracleViewsToXML("myViews", "C:\temp\test_views.xml") + If llSuccess + ? "Export XML reusit!" + Else + ? "Export XML esuat!" + Endif + +Endproc "O" +lcLog = lcLog + "[" + Time() + "] Cleanup obiect ExcelXML." + Chr(13) + Chr(10) +loExcelXML = Null +Endif + +Endtry + +*-- Afi?eaza log-ul final +Local lnIcon +Do Case + Case lcLogLevel = "ERROR" + lnIcon = 16 + Case lcLogLevel = "WARNING" + lnIcon = 48 + Case lcLogLevel = "SUCCESS" + lnIcon = 64 + Otherwise + lnIcon = 64 +Endcase + +AMessageBox(lcLog, lnIcon, "Log Export XML - " + lcLogLevel) + +Return llSuccess +Endproc + +*----------------------------------------------------------- +*-- Exemplu de utilizare cu lista ta existenta de view-uri +*----------------------------------------------------------- +Procedure TestExportViews + Local llSuccess + + *-- Presupune ca ai deja un cursor cu view-urile īncarcat + *-- Exemplu: ai un cursor numit "myViews" cu cāmpurile: + *-- owner, view_name, text_length, view_type, last_analyzed + + *-- Test export XLSX + llSuccess = ExportOracleViewsToXLSX("myViews", "C:\temp\test_views.xlsx") + If llSuccess + ? "Export XLSX reu?it!" + Else + ? "Export XLSX e?uat!" + Endif + + *!* *-- Test export XML + *!* llSuccess = ExportOracleViewsToXML("myViews", "C:\temp\test_views.xml") + *!* If llSuccess + *!* ? "Export XML reusit!" + *!* Else + *!* ? "Export XML esuat!" + *!* Endif + +Endproc + \ No newline at end of file diff --git a/utile/foxcharts/foxcharts.vct b/utile/foxcharts/foxcharts.vct new file mode 100644 index 0000000..d00edbc Binary files /dev/null and b/utile/foxcharts/foxcharts.vct differ diff --git a/utile/foxcharts/foxcharts.vcx b/utile/foxcharts/foxcharts.vcx new file mode 100644 index 0000000..67fa03e Binary files /dev/null and b/utile/foxcharts/foxcharts.vcx differ diff --git a/utile/foxcharts/foxchartsbeta.VCT b/utile/foxcharts/foxchartsbeta.VCT new file mode 100644 index 0000000..51e24df Binary files /dev/null and b/utile/foxcharts/foxchartsbeta.VCT differ diff --git a/utile/foxcharts/foxchartsbeta.vcx b/utile/foxcharts/foxchartsbeta.vcx new file mode 100644 index 0000000..e75f316 Binary files /dev/null and b/utile/foxcharts/foxchartsbeta.vcx differ diff --git a/utile/foxcharts/gdiplusx.VCT b/utile/foxcharts/gdiplusx.VCT new file mode 100644 index 0000000..ad571cc Binary files /dev/null and b/utile/foxcharts/gdiplusx.VCT differ diff --git a/utile/foxcharts/gdiplusx.vcx b/utile/foxcharts/gdiplusx.vcx new file mode 100644 index 0000000..e40920a Binary files /dev/null and b/utile/foxcharts/gdiplusx.vcx differ diff --git a/utile/foxcharts/systemfoxcode.xml b/utile/foxcharts/systemfoxcode.xml new file mode 100644 index 0000000..7292cad --- /dev/null +++ b/utile/foxcharts/systemfoxcode.xml @@ -0,0 +1,305 @@ + + + + C + draw + Drawing + {gdiplusx} + _SCREEN.System.Drawing + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTG9 + + + + F + Bmp + Bitmap + {gdiplusx} + _SCREEN.System.Drawing.Bitmap.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGA + + + + F + Brus + Brush + {gdiplusx} + _SCREEN.System.Drawing.SolidBrush.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGB + + + + F + Clr + Color + {gdiplusx} + _SCREEN.System.Drawing.Color.FromRGB + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGC + + + + F + Font + Font + {gdiplusx} + _SCREEN.System.Drawing.Font.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGD + + + + F + Gfx + Graphics + {gdiplusx} + _SCREEN.System.Drawing.Graphics.FromImage + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGE + + + + F + GfxH + GraphicsH + {gdiplusx} + _SCREEN.System.Drawing.Graphics.FromHWnd + + M + false + 2008-09-30T00:00:00 + VFPX + _2HB1EHKAD + + + + F + GfxI + GraphicsI + {gdiplusx} + _SCREEN.System.Drawing.Graphics.FromImage + + M + false + 2008-09-30T00:00:00 + VFPX + _2HB1EHKAE + + + + F + Img + Image + {gdiplusx} + _SCREEN.System.Drawing.Image.FromFile + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGF + + + + F + Matr + Matrix + {gdiplusx} + _SCREEN.System.Drawing.Drawing2D.Matrix.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGG + + + + F + Path + GraphicsPath + {gdiplusx} + _SCREEN.System.Drawing.Drawing2D.GraphicsPath.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGH + + + + F + Pen + Pen + {gdiplusx} + _SCREEN.System.Drawing.Pen.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGI + + + + F + Pnt + Point + {gdiplusx} + _SCREEN.System.Drawing.Point.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGJ + + + + F + Rect + Rectangle + {gdiplusx} + _SCREEN.System.Drawing.Rectangle.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGK + + + + F + Stre + Stream + {gdiplusx} + _SCREEN.System.IO.MemoryStream.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGL + + + + F + clrm + ColorMatrix + {gdiplusx} + _SCREEN.System.Drawing.Imaging.ColorMatrix.New + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGM + + + + S + gdiplusx + + + + LPARAMETER oFoxcode +LOCAL lcfxtoollib, lnWinHdl, laEnv, lcStr, lcLastWord, lcReturn, lcWith + +lcfxtoollib = SYS(2004)+"FOXTOOLS.FLL" +IF !FILE(lcfxtoollib) + RETURN .F. +ENDIF +SET LIBRARY TO (m.lcfxtoollib) ADDITIVE + +lnWinHdl = _WONTOP() +_wselect(lnWinHdl) + +DIMENSION laEnv[25] +_EdGetEnv(lnWinHdl ,@laEnv) +lcStr = _EDGETSTR(lnWinHdl , 0, laEnv[17]) + +lcWith = WithStr(lcStr) +lcReturn = oFoxCode.Tip +IF NOT EMPTY(lcWith) + IF lcWith+"." == UPPER(LEFT(oFoxCode.Tip,LEN(lcWith)+1)) + lcReturn = SUBSTR(oFoxCode.Tip, LEN(lcWith)+1) + ENDIF +ENDIF + +oFoxCode.ValueType = "V" +RETURN lcReturn + + +PROCEDURE WithStr(tcStr) + LOCAL lcStr, lnLines, i, laLines, lcWord, lcReturn + + IF EMPTY(tcStr) + RETURN "" + ENDIF + lcStr = tcStr + lcReturn = "" + + DIMENSION laLines[1] + lnLines = ALINES(laLines,lcStr) + + * Quick search backward to find a WITH + FOR i = lnLines TO 1 STEP -1 + lcWord = UPPER(ALLTRIM(GETWORDNUM(ALLTRIM(laLines[m.i]), 1))) + IF LEN(lcWord)>3 AND lcWord=="ENDWITH" + EXIT + ENDIF + IF LEN(lcWord)>3 AND lcWord=="WITH" + lcWord = ALLTRIM(CHRTRAN(laLines[m.i],CHR(9)," ")) + IF ATC(REPLICATE("&",2), lcWord) > 0 && strip out comments + lcWord = ALLTRIM(LEFT(lcWord, ATC(REPLICATE("&",2),lcWord)-1) ) + ENDIF + IF ATC(" AS ", lcWord) > 0 && strip out AS + lcWord = ALLTRIM(LEFT(lcWord, ATC(" AS ",lcWord)-1) ) + ENDIF + + lcWord = ALLTRIM(STRTRAN(lcWord,"WITH ","",1,1,1)) + + lcReturn = UPPER(lcWord) + EXIT + ENDIF + ENDFOR + + RETURN lcReturn +ENDPROC + + M + false + 2008-09-30T00:00:00 + VFPX + _2H612DTGN + + +