From 0c75c221382ec7a4c1969ae3de94732898517dfd Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 6 Dec 2013 01:43:28 +0100 Subject: [PATCH] Changeset: 27 Changeset: 27 --- foxbin2prg.prg | 729 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 625 insertions(+), 104 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 511c534..2f26965 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -131,7 +131,11 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro #DEFINE C_MEMBERDATA_F C_VFPDATA_F #DEFINE C_LEN_MEMBERDATA_I LEN(C_MEMBERDATA_I) #DEFINE C_LEN_MEMBERDATA_F LEN(C_MEMBERDATA_F) -#DEFINE C_TAG_REPORTE 'reportes' +#DEFINE C_DATA_I '' +#DEFINE C_TAG_REPORTE 'Reportes' +#DEFINE C_TAG_REPORTE_I '<' + C_TAG_REPORTE + '>' +#DEFINE C_TAG_REPORTE_F '' #DEFINE C_TAB CHR(9) #DEFINE C_CR CHR(13) #DEFINE C_LF CHR(10) @@ -279,17 +283,22 @@ TRY ENDIF ENDCASE - CD (JUSTPATH(lcSys16)) - SET PATH TO (lcPath) ENDIF CATCH TO loEx + IF llExisteConfig + goCnv.writeLog( 'ERROR: ' + TRANSFORM(loEx.ErrorNo) + ', ' + loEx.Message + CR_LF ; + + loEx.Procedure + ', line ' + TRANSFORM(loEx.LineNo) + CR_LF ; + + loEx.Details ) + ENDIF FINALLY goFrm_Avance.HIDE() goFrm_Avance.RELEASE() STORE NULL TO goCnv, goFrm_Avance RELEASE goCnv, goFrm_Avance + CD (JUSTPATH(lcSys16)) + SET PATH TO (lcPath) ENDTRY IF _VFP.STARTMODE > 0 @@ -335,7 +344,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM l_ShowErrors = .F. lFileMode = .F. nClassTimeStamp = '' - n_FB2PRG_Version = 1.8 + n_FB2PRG_Version = 1.9 o_Conversor = NULL c_VC2 = 'VC2' c_SC2 = 'SC2' @@ -789,6 +798,16 @@ DEFINE CLASS c_conversor_base AS SESSION ENDIF ENDIF + CASE JUSTEXT( THIS.c_OutputFile ) = 'FRX' + IF FILE( FORCEEXT(THIS.c_OutputFile,'FRX') ) + THIS.writeLog( 'backup de: ' + FORCEEXT(THIS.c_OutputFile,'FRX') + '/FRT' ) + COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRX')) TO (FORCEEXT(THIS.c_OutputFile,'FRX' + lcNext_Bak)) + + IF FILE( FORCEEXT(THIS.c_OutputFile,'FRT') ) + COPY FILE (FORCEEXT(THIS.c_OutputFile,'FRT')) TO (FORCEEXT(THIS.c_OutputFile,'FRT' + lcNext_Bak)) + ENDIF + ENDIF + OTHERWISE ERROR 'Tipo de archivo [' + JUSTFNAME(THIS.c_OutputFile) + '] no soportado para backup!' @@ -1321,9 +1340,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base + [] ; + [] ; + [] ; + + [] ; + [] ; + + [] ; + [] ; + + [] ; + + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -1545,11 +1569,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE createProject - LPARAMETERS toProject - - #IF .F. - LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' - #ENDIF CREATE TABLE (THIS.c_OutputFile) ; ( NAME M ; @@ -1582,6 +1601,18 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createProject_RecordHeader + LPARAMETERS toProject + + #IF .F. + LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' + #ENDIF + INSERT INTO TABLABIN ; ( NAME ; , TYPE ; @@ -1625,9 +1656,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE createClasslib - * No funciona con el EXE - *CREATE CLASSLIB (THIS.c_outputFile) - CREATE TABLE (THIS.c_OutputFile) ; ( PLATFORM C(8) ; , UNIQUEID C(10) ; @@ -1654,6 +1682,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createClasslib_RecordHeader + INSERT INTO TABLABIN ; ( PLATFORM ; , UNIQUEID ; @@ -1695,6 +1730,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base , USER M ) USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE createForm_RecordHeader + INSERT INTO TABLABIN ; ( PLATFORM ; , UNIQUEID ; @@ -1707,6 +1749,99 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ENDPROC + ******************************************************************************************************************* + PROCEDURE createReport + + CREATE TABLE (THIS.c_OutputFile) ; + ( 'PLATFORM' C(8) ; + , 'UNIQUEID' C(10) ; + , 'TIMESTAMP' N(10) ; + , 'OBJTYPE' N(2) ; + , 'OBJCODE' N(3) ; + , 'NAME' M ; + , 'EXPR' M ; + , 'VPOS' N(9,3) ; + , 'HPOS' N(9,3) ; + , 'HEIGHT' N(9,3) ; + , 'WIDTH' N(9,3) ; + , 'STYLE' M ; + , 'PICTURE' M ; + , 'ORDER' M NOCPTRANS ; + , 'UNIQUE' L ; + , 'COMMENT' M ; + , 'ENVIRON' L ; + , 'BOXCHAR' C(1) ; + , 'FILLCHAR' C(1) ; + , 'TAG' M ; + , 'TAG2' M NOCPTRANS ; + , 'PENRED' N(5) ; + , 'PENGREEN' N(5) ; + , 'PENBLUE' N(5) ; + , 'FILLRED' N(5) ; + , 'FILLGREEN' N(5) ; + , 'FILLBLUE' N(5) ; + , 'PENSIZE' N(5) ; + , 'PENPAT' N(5) ; + , 'FILLPAT' N(5) ; + , 'FONTFACE' M ; + , 'FONTSTYLE' N(3) ; + , 'FONTSIZE' N(3) ; + , 'MODE' N(3) ; + , 'RULER' N(1) ; + , 'RULERLINES' N(1) ; + , 'GRID' L ; + , 'GRIDV' N(2) ; + , 'GRIDH' N(2) ; + , 'FLOAT' L ; + , 'STRETCH' L ; + , 'STRETCHTOP' L ; + , 'TOP' L ; + , 'BOTTOM' L ; + , 'SUPTYPE' N(1) ; + , 'SUPREST' N(1) ; + , 'NOREPEAT' L ; + , 'RESETRPT' N(2) ; + , 'PAGEBREAK' L ; + , 'COLBREAK' L ; + , 'RESETPAGE' L ; + , 'GENERAL' N(3) ; + , 'SPACING' N(3) ; + , 'DOUBLE' L ; + , 'SWAPHEADER' L ; + , 'SWAPFOOTER' L ; + , 'EJECTBEFOR' L ; + , 'EJECTAFTER' L ; + , 'PLAIN' L ; + , 'SUMMARY' L ; + , 'ADDALIAS' L ; + , 'OFFSET' N(3) ; + , 'TOPMARGIN' N(3) ; + , 'BOTMARGIN' N(3) ; + , 'TOTALTYPE' N(2) ; + , 'RESETTOTAL' N(2) ; + , 'RESOID' N(2) ; + , 'CURPOS' L ; + , 'SUPALWAYS' L ; + , 'SUPOVFLOW' L ; + , 'SUPRPCOL' N(1) ; + , 'SUPGROUP' N(2) ; + , 'SUPVALCHNG' L ; + , 'SUPEXPR' M ; + , 'USER' M ) + + USE (THIS.c_OutputFile) ALIAS TABLABIN AGAIN SHARED + + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE emptyRecord + LOCAL loReg + SCATTER MEMO BLANK NAME loReg + RETURN loReg + ENDPROC + + ******************************************************************************************************************* PROCEDURE escribirArchivoBin LPARAMETERS toModulo @@ -2192,6 +2327,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base ******************************************************************************************************************* PROCEDURE analizarAsignacion_TAG_Indicado + *-- DETALLES: Este método está pensado para leer los tags FB2P_VALUE y MEMBERDATA, que tienen esta sintaxis: + * + * _memberdata = + * + * && XML Metadata for customizable properties + * + * Este es un valor especial + * LPARAMETERS tcPropName, tcValue, taProps, tnProp_Count, I, tcTAG_I, tcTAG_F, tnLEN_TAG_I, tnLEN_TAG_F, tcMemo EXTERNAL ARRAY taProps LOCAL llBloqueEncontrado, loEx AS EXCEPTION @@ -3017,6 +3160,11 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo la librería + THIS.createClasslib() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3118,8 +3266,8 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ; , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - THIS.createClasslib() + *-- Creo el registro de cabecera + THIS.createClasslib_RecordHeader() *-- Recorro las CLASES @@ -3277,6 +3425,11 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo el form + THIS.createForm() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF THIS.identificarBloquesDeExclusion( @laCodeLines, lnCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3378,8 +3531,8 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ; , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - THIS.createForm() + *-- Creo el registro de cabecera + THIS.createForm_RecordHeader() *-- El SCX tiene el INCLUDE en el primer registro IF NOT EMPTY(toModulo._includeFile) @@ -3444,7 +3597,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin THIS.insert_AllObjects( @loClase ) - IF NOT loClase._BaseClass == 'dataenvironment' + IF .F. &&NOT loClase._BaseClass == 'dataenvironment' *-- Inserto el COMMENT INSERT INTO TABLABIN ; ( PLATFORM ; @@ -3553,6 +3706,11 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + THIS.doBackup() + + *-- Creo solo la cabecera del proyecto + THIS.createProject() + *-- Identifico los TEXT/ENDTEXT, #IF .F./#ENDIF *THIS.identificarBloquesDeExclusion( @laCodeLines, .F., @laBloquesExclusion, @lnBloquesExclusion ) @@ -3590,10 +3748,8 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; , loFile AS CL_PROJ_FILE OF 'FOXBIN2PRG.PRG' - THIS.doBackup() - - *-- Creo solo la cabecera del proyecto - THIS.createProject( toProject ) + *-- Creo solo el registro de cabecera del proyecto + THIS.createProject_RecordHeader( toProject ) lcMainProg = '' @@ -4229,6 +4385,318 @@ DEFINE CLASS c_conversor_prg_a_pjx AS c_conversor_prg_a_bin ENDDEFINE +******************************************************************************************************************* +DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin + #IF .F. + LOCAL THIS AS c_conversor_prg_a_frx OF 'FOXBIN2PRG.PRG' + #ENDIF + _MEMBERDATA = [] ; + + [] ; + + [] ; + + [] ; + + [] ; + + [] + + + ******************************************************************************************************************* + PROCEDURE Convertir + DODEFAULT() + + TRY + LOCAL lnCodError, loEx AS EXCEPTION, loReg, lcLine, laCodeLines(1), lnCodeLines, lnFB2P_Version, lcSourceFile ; + , laBloquesExclusion(1,2), lnBloquesExclusion, I ; + , loReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + STORE 0 TO lnCodError, lnCodeLines, lnFB2P_Version + STORE '' TO lcLine, lcSourceFile + STORE NULL TO loReg, toModulo + + C_FB2PRG_CODE = FILETOSTR( THIS.c_InputFile ) + lnCodeLines = ALINES( laCodeLines, C_FB2PRG_CODE ) + + THIS.doBackup() + + *-- Creo el reporte + THIS.createReport() + + *-- Identifico el inicio/fin de bloque, definición, cabecera y cuerpo del reporte + THIS.identificarBloquesDeCodigo( @laCodeLines, lnCodeLines, @laBloquesExclusion, lnBloquesExclusion, @loReport ) + + THIS.escribirArchivoBin( @loReport ) + + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN lnCodError + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE escribirArchivoBin + LPARAMETERS toReport + *-- ----------------------------------------------------------------------------------------------------------- + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL loReg, lnCodError, loEx AS EXCEPTION + + *-- Agrego los ARCHIVOS + FOR EACH loReg IN toReport FOXOBJECT + INSERT INTO TABLABIN FROM NAME loReg + ENDFOR + + USE IN (SELECT("TABLABIN")) + + + CATCH TO loEx + lnCodError = loEx.ERRORNO + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + + ENDTRY + + RETURN lnCodError + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE identificarBloquesDeCodigo + LPARAMETERS taCodeLines, tnCodeLines, taBloquesExclusion, tnBloquesExclusion, toReport + *-------------------------------------------------------------------------------------------------------------- + * taCodeLines (!@ IN ) El array con las líneas del código donde buscar + * tnCodeLines (!@ IN ) Cantidad de líneas de código + * taBloquesExclusion (?@ IN ) Sin uso + * tnBloquesExclusion (?@ IN ) Sin uso + * toReport (?@ OUT) Objeto con toda la información del reporte analizado + * + * NOTA: + * Como identificador se usa el nombre de clase o de procedimiento, según corresponda. + *-------------------------------------------------------------------------------------------------------------- + EXTERNAL ARRAY taCodeLines, taBloquesExclusion + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL I, lc_Comentario, lcLine, llFoxBin2Prg_Completed + STORE 0 TO I + + THIS.c_Type = UPPER(JUSTEXT(THIS.c_OutputFile)) + + IF tnCodeLines > 1 + toReport = NULL + toReport = CREATEOBJECT('CL_REPORT') + + WITH THIS + FOR I = 1 TO tnCodeLines + .set_Line( @lcLine, @taCodeLines, I ) + + IF .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Vacía o solo Comentarios + LOOP + ENDIF + + DO CASE + CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + llFoxBin2Prg_Completed = .T. + + CASE .analizarBloque_Reportes( toReport, @lcLine, @taCodeLines, @I, tnCodeLines ) + + ENDCASE + ENDFOR + ENDWITH && THIS + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_Reportes + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, lcComment, lcMetadatos, luValor ; + , laPropsAndValues(1,2), lnPropsAndValues_Count ; + , loReg + + IF LEFT( tcLine, LEN(C_TAG_REPORTE) + 1 ) == '<' + C_TAG_REPORTE + '' + llBloqueEncontrado = .T. + loReg = THIS.emptyRecord() + + WITH THIS + FOR I = I + 1 TO tnCodeLines + lcComment = '' + .set_Line( @tcLine, @taCodeLines, I ) + + DO CASE + CASE LEFT( tcLine, LEN(C_TAG_REPORTE_F) ) == C_TAG_REPORTE_F + I = I + 1 + EXIT + + CASE .lineIsOnlyCommentAndNoMetadata( @tcLine, @lcComment ) + LOOP && Saltear comentarios + + *CASE UPPER( LEFT( tcLine, 14 ) ) == 'BUILD PROJECT ' + * LOOP + + CASE .analizarBloque_platform( toReport, @tcLine, @taCodeLines, @I, @tnCodeLines, @loReg ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'picture' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'tag2' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'penred' ) + + *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'style' ) + + *CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'expr' ) + + CASE .analizarBloque_CDATA_inline( toReport, @tcLine, @taCodeLines, @I, tnCodeLines, @loReg, 'user' ) + + ENDCASE + ENDFOR + ENDWITH && THIS + + I = I - 1 + toReport.Add( loReg ) + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_platform + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, X, lnPos, lnPos2, lcValue, lnLenPropName, laProps(1) ; + , lcComment, lcMetadatos, luValor ; + , laPropsAndValues(1,2), lnPropsAndValues_Count + + IF LOWER( LEFT(tcLine, 10) ) == 'platform="' + llBloqueEncontrado = .T. + lnLastPos = 1 + + FOR X = 1 TO AMEMBERS( laProps, toReg, 0 ) + lnPos = AT( LOWER(laProps(X)) + '="', tcLine ) + + IF lnPos > 0 + lnLenPropName = LEN(laProps(X)) + lnPos2 = AT( '"', SUBSTR( tcLine, lnPos + lnLenPropName + 2 ) ) + lcValue = SUBSTR( tcLine, lnPos + lnLenPropName + 2, lnPos2 - 1 ) + ADDPROPERTY( toReg, laProps(X), lcValue ) + ENDIF + ENDFOR + + ENDIF + + CATCH TO loEx + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + + ******************************************************************************************************************* + PROCEDURE analizarBloque_CDATA_inline + *------------------------------------------------------ + *-- Analiza el bloque + *------------------------------------------------------ + LPARAMETERS toReport, tcLine, taCodeLines, I, tnCodeLines, toReg, tcPropName + + #IF .F. + LOCAL toReport AS CL_REPORT OF 'FOXBIN2PRG.PRG' + #ENDIF + + TRY + LOCAL llBloqueEncontrado, lcValue, loEx as Exception + + IF LEFT(tcLine, 9) == '<' + tcPropName + '>' + llBloqueEncontrado = .T. + + lcValue = STREXTRACT( tcLine, C_DATA_I, C_DATA_F ) + ADDPROPERTY( toReg, tcPropName, lcValue ) + ENDIF + + CATCH TO loEx + IF loEx.ErrorNo = 1470 && Incorrect property name. + loEx.UserValue = 'PropName=[' + TRANSFORM(tcPropName) + '], Value=[' + TRANSFORM(lcValue) + ']' + ENDIF + + IF THIS.l_Debug AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + ENDTRY + + RETURN llBloqueEncontrado + ENDPROC + + +ENDDEFINE + + ******************************************************************************************************************* DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base #IF .F. @@ -4771,94 +5239,96 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base TRY LOCAL lc_TAG_REPORTE lc_TAG_REPORTE_I = '<' + C_TAG_REPORTE + ' ' - lc_TAG_REPORTE_F = ' >' + lc_TAG_REPORTE_F = '' 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 PRETEXT 1+2 - platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>platform="WINDOWS " uniqueid="<>" timestamp="<>" objtype="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - objcode="<>" name="<>" + objcode="<>" name="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - vpos="<>" hpos="<>" height="toReg.height" width="toReg.width" + vpos="<>" hpos="<>" height="<>" width="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - picture="<>" order="<>" unique="<>" comment="<>" + order="<>" unique="<>" comment="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - environ="<>" boxchar="<>" fillchar="<>" + environ="<>" boxchar="<>" fillchar="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - tag="<>" tag2="<>" penred="<>" + pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - pengreen="<>" penblue="<>" fillred="<>" fillgreen="<>" + fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - fillblue="<>" pensize="<>" penpat="<>" fillpat="<>" + fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - fontface="<>" fontstyle="<>" fontsize="<>" mode="<>" + ruler="<>" rulerlines="<>" grid="<>" gridv="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - ruler="<>" rulerlines="<>" grid="<>" gridv="<>" - ENDTEXT - - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1 - gridh="<>" float="<>" stretch="<>" stretchtop="<>" + gridh="<>" float="<>" stretch="<>" stretchtop="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" + top="<>" bottom="<>" suptype="<>" suprest="<>" norepeat="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" + resetrpt="<>" pagebreak="<>" colbreak="<>" resetpage="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - general="<>" spacing="<>" double="<>" swapheader="<>" + general="<>" spacing="<>" double="<>" swapheader="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" + swapfooter="<>" ejectbefor="<>" ejectafter="<>" plain="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - summary="<>" addalias="<>" offset="<>" topmargin="<>" + summary="<>" addalias="<>" offset="<>" topmargin="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" + botmargin="<>" totaltype="<>" resettotal="<>" resoid="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" + curpos="<>" supalways="<>" supovflow="<>" suprpcol="<>" <<>> ENDTEXT TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - supgroup="<>" supvalchng="<>" supexpr="<>" user="<>" + supgroup="<>" supvalchng="<>" supexpr="<>" > + ENDTEXT + + * <>tag="<>" + TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 + <>>]]> + <>>]]> + <>>]]> + <>>]]> + <>