diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 9b02d75..7ed3d4f 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -5641,7 +5641,11 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -6981,564 +6985,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base ENDPROC - ******************************************************************************************************************* - PROCEDURE write_DBF_HEADER - LPARAMETERS tn_HexFileType, tl_FileHasCDX, tl_FileHasMemo, tl_FileIsDBC, tc_DBC_Name - TRY - LOCAL laFields(1,18), loEx AS EXCEPTION - - *FOR I = 1 TO AFIELDS(laFields) - * IF INLIST( laFields(I,2), 'M', 'Q', 'V', 'W' ) - * ll_FileHasMemo = .T. - * EXIT - * ENDIF - *ENDFOR - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - ENDTEXT - - *-- Fields - THIS.write_DBF_FIELDS() - - *-- Indexes - THIS.write_DBF_INDEXES() - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <> - ENDTEXT - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBF_FIELDS - TRY - LOCAL I, laFields(1,18), loEx AS EXCEPTION - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - ENDTEXT - - FOR I = 1 TO AFIELDS(laFields) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - ENDTEXT - ENDFOR - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> <> - <<>> - ENDTEXT - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBF_INDEXES - TRY - LOCAL I, laTagInfo(1,6), loEx AS EXCEPTION - - IF TAGCOUNT() > 0 - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <><><> - <<>> - <<>> <> - ENDTEXT - - FOR I = 1 TO ATAGINFO( laTagInfo ) - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> - ENDTEXT - ENDFOR - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> <> - <<>> - ENDTEXT - ENDIF - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBC_HEADER - TRY - LOCAL I, lcText, lcDBC, loEx AS EXCEPTION - lcText = '' - lcDBC = JUSTSTEM(DBC()) - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - ENDTEXT - - *-- Connections - THIS.write_DBC_CONNECTIONS() - - *-- Tables - THIS.write_DBC_TABLES() - - *-- Views - THIS.write_DBC_VIEWS() - - *-- Relations - THIS.write_DBC_RELATIONS() - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - - <<>> - ENDTEXT - - C_FB2PRG_CODE = C_FB2PRG_CODE + lcText - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBC_CONNECTIONS - LPARAMETERS taConnections, tnConnection_Count - - EXTERNAL ARRAY taConnections - - TRY - LOCAL I, lcText, lcDBC, loEx AS EXCEPTION - lcText = '' - lcDBC = JUSTSTEM(DBC()) - - DIMENSION taConnections(1) - tnConnection_Count = ADBOBJECTS( taConnections,"CONNECTION" ) - - IF tnConnection_Count > 0 - ASORT( taConnections, 1, -1, 0, 1 ) - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR I = 1 TO tnConnection_Count - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> - ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - C_FB2PRG_CODE = C_FB2PRG_CODE + lcText - ENDIF - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBC_TABLES - LPARAMETERS taTables, tnTable_Count - - EXTERNAL ARRAY taTables - - TRY - LOCAL I, X, lcText, lcDBC, lnField_Count, laFields(1), loEx AS EXCEPTION - STORE 0 TO I, X, tnTable_Count, lnField_Count - lcText = '' - lcDBC = JUSTSTEM(DBC()) - - DIMENSION taTables(1) - tnTable_Count = ADBOBJECTS( taTables,"TABLE" ) - - IF tnTable_Count > 0 - ASORT( taTables, 1, -1, 0, 1 ) - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR I = 1 TO tnTable_Count - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - ENDTEXT - - _TALLY = 0 - SELECT LOWER(TB.objectname) FROM TABLABIN TB ; - INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ; - AND TB2.objectname = PADR(LOWER(taTables(I)),128) ; - INTO ARRAY laFields - lnField_Count = _TALLY - - IF lnField_Count > 0 - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR X = 1 TO lnField_Count - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> - ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT - ENDIF - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>>
<>
- ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>>
- <<>> - ENDTEXT - - C_FB2PRG_CODE = C_FB2PRG_CODE + lcText - ENDIF - - CATCH TO loEx - IF BETWEEN(I, 1, tnTable_Count) - loEx.USERVALUE = loEx.USERVALUE + CR_LF + "taTables(" + TRANSFORM(I) + ") = " + RTRIM(taTables(I)) - ENDIF - IF BETWEEN(X, 1, lnField_Count) - loEx.USERVALUE = loEx.USERVALUE + CR_LF + "laFields(" + TRANSFORM(X) + ") = " + RTRIM(laFields(X)) - ENDIF - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - FINALLY - USE IN (SELECT("TB")) - USE IN (SELECT("TB2")) - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBC_VIEWS - LPARAMETERS taViews, tnView_Count - - EXTERNAL ARRAY taViews - - TRY - LOCAL I, lcText, lcDBC, lnField_Count, laFields(1), loEx AS EXCEPTION - STORE 0 TO I, X, tnView_Count, lnField_Count - lcText = '' - lcDBC = JUSTSTEM(DBC()) - - DIMENSION taViews(1) - tnView_Count = ADBOBJECTS( taViews,"VIEW" ) - - IF tnView_Count > 0 - ASORT( taViews, 1, -1, 0, 1 ) - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR I = 1 TO tnView_Count - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - ENDTEXT - - _TALLY = 0 - _TALLY = 0 - SELECT LOWER(TB.objectname) FROM TABLABIN TB ; - INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ; - AND TB2.objectname = PADR(LOWER(taViews(I)),128) ; - INTO ARRAY laFields - lnField_Count = _TALLY - - IF lnField_Count > 0 - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR X = 1 TO lnField_Count - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> - ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT - ENDIF - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - C_FB2PRG_CODE = C_FB2PRG_CODE + lcText - ENDIF - - CATCH TO loEx - IF BETWEEN(I, 1, tnTable_Count) - loEx.USERVALUE = loEx.USERVALUE + CR_LF + "taViews(" + TRANSFORM(I) + ") = " + RTRIM(taViews(I)) - ENDIF - IF BETWEEN(X, 1, lnField_Count) - loEx.USERVALUE = loEx.USERVALUE + CR_LF + "laFields(" + TRANSFORM(X) + ") = " + RTRIM(laFields(X)) - ENDIF - - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - - ******************************************************************************************************************* - PROCEDURE write_DBC_RELATIONS - LPARAMETERS taRelations, tnRelation_Count - - EXTERNAL ARRAY taRelations - - TRY - LOCAL I, lcText, lcDBC, loEx AS EXCEPTION - lcText = '' - lcDBC = JUSTSTEM(DBC()) - - DIMENSION taRelations(1,5) - tnRelation_Count = ADBOBJECTS( taRelations,"RELATION" ) - - IF tnRelation_Count > 0 - ASORT( taRelations, 2, -1, 0, 1 ) - ASORT( taRelations, 1, -1, 0, 1 ) - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - FOR I = 1 TO tnRelation_Count - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> <> - <<>> - ENDTEXT - ENDFOR - - TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - <<>> - <<>> - ENDTEXT - - C_FB2PRG_CODE = C_FB2PRG_CODE + lcText - ENDIF - - CATCH TO loEx - IF THIS.l_Debug AND _VFP.STARTMODE = 0 - SET STEP ON - ENDIF - - THROW - - ENDTRY - - RETURN - ENDPROC - - ******************************************************************************************************************* PROCEDURE write_DefinicionObjetosOLE *-- Crea la definición del tag *< OLE: /> con la información de todos los objetos OLE @@ -8393,6 +7839,7 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg TRY LOCAL lnCodError, laDatabases(1), lnDatabases_Count, laDatabases2(1) ; , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name + LOCAL loTable AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' STORE 0 TO lnCodError lnDatabases_Count = ADATABASES(laDatabases) @@ -8402,7 +7849,8 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg THIS.write_PROGRAM_HEADER() *-- Header - THIS.write_DBF_HEADER( ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name ) + loTable = CREATEOBJECT('CL_DBF_TABLE') + C_FB2PRG_CODE = C_FB2PRG_CODE + loTable.toText( ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name ) *-- Genero el DB2 @@ -8459,6 +7907,7 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg TRY LOCAL lnCodError, laDatabases(1), lnDatabases_Count, laDatabases2(1) ; , ln_HexFileType, ll_FileHasCDX, ll_FileHasMemo, ll_FileIsDBC, lc_DBC_Name + LOCAL loDatabase AS CL_DATABASE OF 'FOXBIN2PRG.PRG' STORE 0 TO lnCodError lnDatabases_Count = ADATABASES(laDatabases) @@ -8469,7 +7918,8 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg THIS.write_PROGRAM_HEADER() *-- Header - THIS.write_DBC_HEADER() + loDatabase = CREATEOBJECT('CL_DATABASE') + C_FB2PRG_CODE = C_FB2PRG_CODE + loDatabase.toText() *-- Genero el DC2 @@ -8514,6 +7964,8 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM _MEMBERDATA = [] ; + [] ; + [] ; + + [] ; + + [] ; + [] l_Debug = .F. @@ -8534,11 +7986,27 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM ******************************************************************************************************************* PROCEDURE set_Line + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (v! IN ) Número de línea en análisis + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I tcLine = LTRIM( taCodeLines(I), 0, ' ', CHR(9) ) ENDPROC + ******************************************************************************************************************* + PROCEDURE analizarBloque + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE toText + ENDPROC + + ENDDEFINE @@ -8555,6 +8023,7 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION _MEMBERDATA = [] ; + [] ; + [] ; + + [] ; + [] l_Debug = .F. @@ -8580,6 +8049,12 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION ******************************************************************************************************************* PROCEDURE set_Line + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (v! IN ) Número de línea en análisis + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I tcLine = LTRIM( taCodeLines(I), 0, ' ', CHR(9) ) ENDPROC @@ -9242,7 +8717,6 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE #ENDIF _MEMBERDATA = [] ; - + [] ; + [] ; + [] ; + [] ; @@ -9289,6 +8763,13 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9366,6 +8847,68 @@ DEFINE CLASS CL_DATABASE AS CL_CUS_BASE PROCEDURE DBWriteObjects LPARAMETERS tc_OutputFile + LOCAL loTable AS CL_DBC_TABLE ; + , loConnection AS CL_DBC_CONNECTION ; + , loView AS CL_DBC_VIEW ; + , loRelation AS CL_DBC_RELATION + + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE toText + TRY + LOCAL I, lcText, lcDBC, loEx AS EXCEPTION + LOCAL loConnections AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG' + LOCAL loTables AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG' + LOCAL loViews AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG' + LOCAL loRelations AS CL_DBC_RELATIONS OF 'FOXBIN2PRG.PRG' + lcText = '' + lcDBC = JUSTSTEM(DBC()) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + ENDTEXT + + *-- Connections + loConnections = THIS._Connections + lcText = lcText + loConnections.toText() + + *-- Tables + loTables = THIS._Tables + lcText = lcText + loTables.toText() + + *-- Views + loViews = THIS._Views + lcText = lcText + loViews.toText() + + *-- Relations + loRelations = THIS._Relations + lcText = lcText + loRelations.toText() + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + + <<>> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText ENDPROC @@ -9378,13 +8921,16 @@ DEFINE CLASS CL_DBC_CONNECTIONS AS CL_COL_BASE LOCAL THIS AS CL_DBC_CONNECTIONS OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9433,6 +8979,56 @@ DEFINE CLASS CL_DBC_CONNECTIONS AS CL_COL_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taConnections (@? OUT) Array de conexiones + * tnConnection_Count (@? OUT) Cantidad de conexiones + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taConnections, tnConnection_Count + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + LOCAL loConnection AS CL_DBC_CONNECTION OF 'FOXBIN2PRG.PRG' + lcText = '' + + DIMENSION taConnections(1) + tnConnection_Count = ADBOBJECTS( taConnections,"CONNECTION" ) + + IF tnConnection_Count > 0 + ASORT( taConnections, 1, -1, 0, 1 ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loConnection = CREATEOBJECT('CL_DBC_CONNECTION') + + FOR I = 1 TO tnConnection_Count + lcText = lcText + loConnection.toText( taConnections(I) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9461,7 +9057,6 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -9488,6 +9083,13 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9534,6 +9136,53 @@ DEFINE CLASS CL_DBC_CONNECTION AS CL_CUS_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcConnection (v! IN ) Nombre de la Conexión + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcConnection + + TRY + LOCAL lcText, loEx AS EXCEPTION + + TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> + ENDTEXT + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9543,13 +9192,16 @@ DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE LOCAL THIS AS CL_DBC_TABLES OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9598,6 +9250,64 @@ DEFINE CLASS CL_DBC_TABLES AS CL_COL_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taTables (@? OUT) Array de conexiones + * lnTable_Count (@? OUT) Cantidad de conexiones + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taTables, tnTable_Count + + EXTERNAL ARRAY taTables + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + LOCAL loTable AS CL_DBC_TABLE OF 'FOXBIN2PRG.PRG' + STORE 0 TO I, tnTable_Count + lcText = '' + + DIMENSION taTables(1) + tnTable_Count = ADBOBJECTS( taTables,"TABLE" ) + + IF tnTable_Count > 0 + ASORT( taTables, 1, -1, 0, 1 ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loTable = CREATEOBJECT('CL_DBC_TABLE') + + FOR I = 1 TO tnTable_Count + lcText = lcText + loTable.toText( taTables(I) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF BETWEEN(I, 1, tnTable_Count) + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "taTables(" + TRANSFORM(I) + ") = " + RTRIM(TRANSFORM(taTables(I))) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9617,7 +9327,6 @@ DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -9646,6 +9355,13 @@ DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9697,6 +9413,60 @@ DEFINE CLASS CL_DBC_TABLE AS CL_CUS_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcTable (v! IN ) Nombre de la Tabla + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcTable + + TRY + LOCAL lcText, loEx AS EXCEPTION + LOCAL loIndexes AS CL_DBC_INDEXES_DB OF 'FOXBIN2PRG.PRG' + LOCAL loFields AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG' + lcText = '' + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + ENDTEXT + + loFields = CREATEOBJECT('CL_DBC_FIELDS_DB') + lcText = lcText + loFields.toText( tcTable ) + + loIndexes = CREATEOBJECT('CL_DBC_INDEXES_DB') + lcText = lcText + loIndexes.toText( tcTable ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>>
+ ENDTEXT + + + CATCH TO loEx + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcTable = " + RTRIM(TRANSFORM(tcTable)) + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9706,13 +9476,16 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE LOCAL THIS AS CL_DBC_FIELDS_DB OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9762,6 +9535,64 @@ DEFINE CLASS CL_DBC_FIELDS_DB AS CL_COL_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcTable (v! IN ) Nombre de la Tabla + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcTable + + TRY + LOCAL X, lcText, lnField_Count, laFields(1), loEx AS EXCEPTION + LOCAL loField AS CL_DBC_FIELD_DB OF 'FOXBIN2PRG.PRG' + STORE 0 TO X, lnField_Count + lcText = '' + + _TALLY = 0 + SELECT LOWER(TB.objectname) FROM TABLABIN TB ; + INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ; + AND TB2.objectname = PADR(LOWER(tcTable),128) ; + INTO ARRAY laFields + lnField_Count = _TALLY + + IF lnField_Count > 0 + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loField = CREATEOBJECT('CL_DBC_FIELD_DB') + + FOR X = 1 TO lnField_Count + lcText = lcText + loField.toText( tcTable, laFields(X) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF BETWEEN(X, 1, lnField_Count) + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcTable = " + RTRIM(TRANSFORM(tcTable)) + ", laFields(" + TRANSFORM(X) + ") = " + RTRIM(TRANSFORM(laFields(X))) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TB")) + USE IN (SELECT("TB2")) + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9782,7 +9613,6 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -9801,6 +9631,13 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9847,6 +9684,200 @@ DEFINE CLASS CL_DBC_FIELD_DB AS CL_CUS_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcTable (v! IN ) Nombre de la Tabla + * tcField (v! IN ) Nombre del campo + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcTable, tcField + + TRY + LOCAL lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> + ENDTEXT + + + CATCH TO loEx + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcTable = " + RTRIM(TRANSFORM(tcTable)) + ", tcField = " + RTRIM(TRANSFORM(tcField)) + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_INDEXES_DB AS CL_COL_BASE + #IF .F. + LOCAL THIS AS CL_DBC_INDEXES_DB OF 'FOXBIN2PRG.PRG' + #ENDIF + + + *-- Info + _Name = '' + _IsUnique = '' + _Comment = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcTable (v! IN ) Nombre de la Tabla + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcTable + + TRY + LOCAL X, lcText, lnIndex_Count, laIndexes(1), loEx AS EXCEPTION + LOCAL loIndex AS CL_DBC_INDEX_DB OF 'FOXBIN2PRG.PRG' + STORE 0 TO X, lnIndex_Count + lcText = '' + + _TALLY = 0 + SELECT LOWER(TB.objectname) FROM TABLABIN TB ; + INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Index',10) ; + AND TB2.objectname = PADR(LOWER(tcTable),128) ; + INTO ARRAY laIndexes + lnIndex_Count = _TALLY + + IF lnIndex_Count > 0 + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loIndex = CREATEOBJECT('CL_DBC_INDEX_DB') + + FOR X = 1 TO lnIndex_Count + lcText = lcText + loIndex.toText( laIndexes(X) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF BETWEEN(X, 1, lnField_Count) + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "laIndexes(" + TRANSFORM(X) + ") = " + RTRIM(laIndexes(X)) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TB")) + USE IN (SELECT("TB2")) + ENDTRY + + RETURN lcText + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_INDEX_DB AS CL_CUS_BASE + #IF .F. + LOCAL THIS AS CL_DBC_INDEX_DB OF 'FOXBIN2PRG.PRG' + #ENDIF + + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] + + + *-- Info + _Name = '' + _IsUnique = '' + _Comment = '' + + + ******************************************************************************************************************* + PROCEDURE analizarBloque + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcIndex (v! IN ) Nombre del índice + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcIndex + + TRY + LOCAL lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> + ENDTEXT + + CATCH TO loEx + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcIndex = " + RTRIM(TRANSFORM(tcIndex)) + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_INDEXES_VW AS CL_DBC_INDEXES_DB +ENDDEFINE + + +******************************************************************************************************************* +DEFINE CLASS CL_DBC_INDEX_VW AS CL_DBC_INDEX_DB ENDDEFINE @@ -9856,13 +9887,15 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE LOCAL THIS AS CL_DBC_VIEWS OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -9911,6 +9944,64 @@ DEFINE CLASS CL_DBC_VIEWS AS CL_COL_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taViews (@? OUT) Array de vistas + * tnView_Count (@? OUT) Cantidad de vistas + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taViews, tnView_Count + + EXTERNAL ARRAY taViews + + TRY + LOCAL I, lcText, lcDBC, lnField_Count, laFields(1), loEx AS EXCEPTION + LOCAL loView AS CL_DBC_VIEW OF 'FOXBIN2PRG.PRG' + STORE 0 TO I, X, tnView_Count, lnField_Count + lcText = '' + lcDBC = JUSTSTEM(DBC()) + + DIMENSION taViews(1) + tnView_Count = ADBOBJECTS( taViews,"VIEW" ) + + IF tnView_Count > 0 + ASORT( taViews, 1, -1, 0, 1 ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loView = CREATEOBJECT('CL_DBC_VIEW') + + FOR I = 1 TO tnView_Count + lcText = lcText + loView.toText( taViews(I) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF BETWEEN(I, 1, tnTable_Count) + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "taViews(" + TRANSFORM(I) + ") = " + RTRIM(taViews(I)) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -9926,7 +10017,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -9935,7 +10026,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -9944,7 +10035,8 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + + [] ; + + [] ; + [] @@ -9975,6 +10067,7 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE *-- Sub-objects _Fields = NULL + _Indexes = NULL ************************************************************************************************ @@ -9982,16 +10075,25 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE DODEFAULT() *-- THIS._Fields = CREATEOBJECT("CL_DBC_FIELDS_VW") + THIS._Indexes = CREATEOBJECT("CL_DBC_INDEXES_VW") ENDPROC ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION LOCAL loFields AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG' + LOCAL loIndexes AS CL_DBC_INDEXES_VW OF 'FOXBIN2PRG.PRG' STORE '' TO lcPropName, lcValue IF LEFT(tcLine, LEN(C_VIEW_I)) == C_VIEW_I @@ -10011,6 +10113,10 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE loFields = THIS._Fields loFields.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + *CASE C_INDEXES_I $ tcLine + * loIndexes = THIS._Indexes + * loIndexes.analizarBloque( @tcLine, @taCodeLines, @I, tnCodeLines ) + OTHERWISE && Propiedad de VIEW *-- Estructura a reconocer: * NOMBRE @@ -10038,6 +10144,73 @@ DEFINE CLASS CL_DBC_VIEW AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcView (v! IN ) Vista en evaluación + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcView + + TRY + LOCAL I, lcText, lcDBC, lnField_Count, laFields(1), loEx AS EXCEPTION + LOCAL loFields AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG' + LOCAL loIndexes AS CL_DBC_INDEXES_VW OF 'FOXBIN2PRG.PRG' + lcText = '' + + TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + ENDTEXT + + loFields = THIS._Fields + lcText = lcText + loFields.toText( tcView ) + + loIndexes = THIS._Indexes + lcText = lcText + loIndexes.toText( tcView ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + ENDTEXT + + + CATCH TO loEx + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcView = " + RTRIM(TRANSFORM(tcView)) + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10047,18 +10220,20 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_COL_BASE LOCAL THIS AS CL_DBC_FIELDS_VW OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY LOCAL loField AS CL_DBC_FIELD_VW OF 'FOXBIN2PRG.PRG' - *LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION STORE '' TO lcPropName, lcValue @@ -10103,6 +10278,65 @@ DEFINE CLASS CL_DBC_FIELDS_VW AS CL_COL_BASE ENDPROC + ******************************************************************************************************************* + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcView (v! IN ) Nombre de la Vista + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcView + + TRY + LOCAL X, lcText, lnField_Count, laFields(1), loEx AS EXCEPTION + LOCAL loField AS CL_DBC_FIELD_VW OF 'FOXBIN2PRG.PRG' + STORE 0 TO X, tnTable_Count, lnField_Count + lcText = '' + + _TALLY = 0 + SELECT LOWER(TB.objectname) FROM TABLABIN TB ; + INNER JOIN TABLABIN TB2 ON STR(TB.parentid)+TB.objecttype = STR(TB2.objectid)+PADR('Field',10) ; + AND TB2.objectname = PADR(LOWER(tcView),128) ; + INTO ARRAY laFields + lnField_Count = _TALLY + + IF lnField_Count > 0 + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loField = CREATEOBJECT("CL_DBC_FIELD_VW") + + FOR X = 1 TO lnField_Count + lcText = lcText + loField.toText( tcView, laFields(X) ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF BETWEEN(X, 1, lnField_Count) + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "laFields(" + TRANSFORM(X) + ") = " + RTRIM(laFields(X)) + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TB")) + USE IN (SELECT("TB2")) + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10127,7 +10361,6 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -10148,8 +10381,14 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_CUS_BASE _UpdateName = '' - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10179,6 +10418,7 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_CUS_BASE ENDFOR ENDIF + CATCH TO loEx IF loEx.ERRORNO = 1470 && Incorrect property name. loEx.USERVALUE = 'I=' + TRANSFORM(I) + ', tcLine=' + TRANSFORM(tcLine) + ', PropName=[' + TRANSFORM(lcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' @@ -10196,6 +10436,51 @@ DEFINE CLASS CL_DBC_FIELD_VW AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcView (v! IN ) Nombre de la Vista + * tcField (v! IN ) Nombre del campo + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcView, tcField + + TRY + LOCAL lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> + ENDTEXT + + + CATCH TO loEx + loEx.USERVALUE = loEx.USERVALUE + CR_LF + "tcField = " + RTRIM(TRANSFORM(tcField)) + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10205,18 +10490,19 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE LOCAL THIS AS CL_DBC_RELATIONS OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY LOCAL loRelation AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG' - *LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' LOCAL llBloqueEncontrado, lcPropName, lcValue, loEx AS EXCEPTION STORE '' TO lcPropName, lcValue @@ -10261,6 +10547,58 @@ DEFINE CLASS CL_DBC_RELATIONS AS CL_COL_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taRelations (@? OUT) Array de relaciones + * tnRelation_Count (@? OUT) Cantidad de relaciones + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taRelations, tnRelation_Count + + EXTERNAL ARRAY taRelations + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + LOCAL loRelation AS CL_DBC_RELATION OF 'FOXBIN2PRG.PRG' + lcText = '' + + DIMENSION taRelations(1,5) + tnRelation_Count = ADBOBJECTS( taRelations,"RELATION" ) + + IF tnRelation_Count > 0 + ASORT( taRelations, 2, -1, 0, 1 ) + ASORT( taRelations, 1, -1, 0, 1 ) + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + + loRelation = CREATEOBJECT('CL_DBC_RELATION') + + FOR I = 1 TO tnRelation_Count + lcText = lcText + loRelation.toText( @taRelations, I ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> + ENDTEXT + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10276,7 +10614,6 @@ DEFINE CLASS CL_DBC_RELATION AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -10290,6 +10627,13 @@ DEFINE CLASS CL_DBC_RELATION AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10336,6 +10680,42 @@ DEFINE CLASS CL_DBC_RELATION AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taRelations (@! IN ) Array de relaciones + * I (@! IN ) Número de relación evaluado + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taRelations, I + + TRY + LOCAL lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10346,7 +10726,6 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE #ENDIF _MEMBERDATA = [] ; - + [] ; + [] ; + [] ; + [] ; @@ -10379,7 +10758,6 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE _Indexes = NULL - ************************************************************************************************ PROCEDURE INIT DODEFAULT() *-- @@ -10388,8 +10766,14 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE ENDPROC - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10446,6 +10830,70 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tn_HexFileType (v! IN ) Tipo de archivo (en Hex) + * tl_FileHasCDX (v! IN ) Indica si el archivo tiene CDX asociado + * tl_FileHasMemo (v! IN ) Indica si el archivo tiene MEMO (FPT) asociado + * tl_FileIsDBC (v! IN ) Indica si el archivo es un DBC + * tc_DBC_Name (v! IN ) Nombre del DBC (si tiene) + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tn_HexFileType, tl_FileHasCDX, tl_FileHasMemo, tl_FileIsDBC, tc_DBC_Name + + EXTERNAL ARRAY taFields + + TRY + LOCAL lcText, loEx AS EXCEPTION + LOCAL loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' + LOCAL loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' + lcText = '' + + *FOR I = 1 TO AFIELDS(laFields) + * IF INLIST( laFields(I,2), 'M', 'Q', 'V', 'W' ) + * ll_FileHasMemo = .T. + * EXIT + * ENDIF + *ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + ENDTEXT + + *-- Fields + loFields = THIS._Fields + lcText = lcText + loFields.toText() + + *-- Indexes + loIndexes = THIS._Indexes + lcText = lcText + loIndexes.toText() + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <> + <<>> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10455,13 +10903,16 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE LOCAL THIS AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10511,13 +10962,59 @@ DEFINE CLASS CL_DBF_FIELDS AS CL_COL_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taFields (@? OUT) Array de información de campos + * tnField_Count (@? OUT) Cantidad de campos + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taFields, tnField_Count + + EXTERNAL ARRAY taFields + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + LOCAL loField AS CL_DBF_FIELD OF 'FOXBIN2PRG.PRG' + lcText = '' + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + ENDTEXT + + tnField_Count = AFIELDS(taFields) + loField = CREATEOBJECT('CL_DBF_FIELD') + + FOR I = 1 TO tnField_Count + lcText = lcText + loField.toText( @taFields, I ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> <> + <<>> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE ******************************************************************************************************************* DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE #IF .F. - LOCAL THIS AS CL_DBF_TABLE OF 'FOXBIN2PRG.PRG' + LOCAL THIS AS CL_DBF_FIELD OF 'FOXBIN2PRG.PRG' #ENDIF _MEMBERDATA = [] ; @@ -10539,7 +11036,6 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE + [] ; + [] ; + [] ; - + [] ; + [] @@ -10566,6 +11062,13 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10612,6 +11115,57 @@ DEFINE CLASS CL_DBF_FIELD AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taFields (@! IN ) Array de información de campos + * I (@! IN ) Campo en evaluación + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taFields, I + + EXTERNAL ARRAY taFields + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10621,13 +11175,15 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE LOCAL THIS AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' #ENDIF - *_MEMBERDATA = [] ; - * + [] ; - * + [] - - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10676,6 +11232,56 @@ DEFINE CLASS CL_DBF_INDEXES AS CL_COL_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taTagInfo (@? OUT) Array de información de indices + * tnTagInfo_Count (@? OUT) Cantidad de índices + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taTagInfo, tnTagInfo_Count + + EXTERNAL ARRAY taTagInfo + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + LOCAL loIndex AS CL_DBF_INDEX OF 'FOXBIN2PRG.PRG' + lcText = '' + + IF TAGCOUNT() > 0 + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <><><> + <<>> + <<>> <> + ENDTEXT + + tnTagInfo_Count = ATAGINFO( taTagInfo ) + loIndex = CREATEOBJECT("CL_DBF_INDEX") + + FOR I = 1 TO tnTagInfo_Count + lcText = lcText + loIndex.toText( @taTagInfo, I ) + ENDFOR + + TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> <> + <<>> + ENDTEXT + ENDIF + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE @@ -10704,8 +11310,14 @@ DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE _Collate = '' - ******************************************************************************************************************* PROCEDURE analizarBloque + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * tcLine (@! IN/OUT) Contenido de la línea en análisis + * taCodeLines (@! IN ) Array de líneas del programa analizado + * I (@! IN/OUT) Número de línea en análisis + * tnCodeLines (@! IN ) Cantidad de líneas del programa analizado + *--------------------------------------------------------------------------------------------------- LPARAMETERS tcLine, taCodeLines, I, tnCodeLines TRY @@ -10752,6 +11364,45 @@ DEFINE CLASS CL_DBF_INDEX AS CL_CUS_BASE ENDPROC + PROCEDURE toText + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) + * taTagInfo (@? IN ) Array de información de indices + * I (@? IN ) Indice en evaluación + *--------------------------------------------------------------------------------------------------- + LPARAMETERS taTagInfo, I + + EXTERNAL ARRAY taTagInfo + + TRY + LOCAL I, lcText, loEx AS EXCEPTION + lcText = '' + + TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <<>> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> <> + <<>> + ENDTEXT + + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lcText + ENDPROC + + ENDDEFINE