/**/ CALL RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs" CALL SysLoadFuncs Parse upper arg nombre if pos('.INI',nombre)=0 then do archini=nombre||'.INI' rexx=nombre||'.CMD' end else do nombre=delstr(nombre,pos('.INI',nombre)) archini=nombre||'.INI' rexx=nombre||'.CMD' end ct=X2C('00') intro=X2c('0D0A') call lineout rexx,"/* Script REXX para re-crear el archivo "||archini||" */" call lineout rexx,'/* Archivo: '||archini||' */' call lineout rexx,'' call lineout rexx,"Arch='"||archini||"'" call lineout rexx,"say 'Archivo: '||Arch" call lineout rexx,'' call lineout rexx,'Say "Pulse S + Enter para seguir ..."' call lineout rexx,'PULL respuesta' call lineout rexx,'IF respuesta = "S" THEN DO' call lineout rexx,'' call lineout rexx,"CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'" call lineout rexx,"CALL SysLoadFuncs" call lineout rexx,'' call lineout rexx,'CALL RxFuncAdd "FastIniStart", "FastIni", "FastIniStart"' call lineout rexx,'CALL RxFuncAdd "FastIniEnd", "FastIni", "FastIniEnd"' call lineout rexx,'mymkfileRC = FastIniStart(Arch, "mymkfileHandle")' call lineout rexx,'' say 'Cabecera del archivo REXX - OK' /* Empieza -y acaba- el tomate */ call sysini archini,'ALL:','arbol' do i=1 to arbol.0 call rama arbol.i say left(arbol.i,40)||' - Apl. '||right(i,3)||'/'||arbol.0||' OK' end call lineout rexx,'call FastIniEnd mymkfileHandle' call lineout rexx,'' call lineout rexx,'Say " "' call lineout rexx,'Say "Terminado"' call lineout rexx,'Say " "' call lineout rexx,'end' exit rama: parse arg apl call lineout rexx,'/* Aplicaci¢n: '||apl||' */' call lineout rexx,'' call lineout rexx,"Apl='"||apl||"'" call lineout rexx,"say 'Escribiendo aplicaci¢n: '||Apl" call lineout rexx,'' call sysini archini,apl,'ALL:',hoja do j=1 to hoja.0 valor=sysini(archini,apl,hoja.j) hoja.j=reconv(hoja.j) call lineout rexx,"Clave="||hoja.j if length(valor)<=256 then do valor=reconv(valor) call lineout rexx,"Valor="||valor end else do call lineout rexx,"Subvalor="||mulargo(valor) call lineout rexx,"Valor=X2C(Subvalor)" end call lineout rexx,"Call SysInI Arch,Apl,Clave,Valor" call lineout rexx,'' end return reconv: parse arg bruto refinado='' carint='' sys=0 anterior='nada' do while length(bruto)>0 carint=left(bruto,1) bruto=right(bruto,length(bruto)-1) if c2d(carint)>250 | c2d(carint)<32 | c2d(carint)=39 then do select when anterior='nada' then do refinado="'"||c2x(carint) end when anterior='byte' then do refinado=refinado||c2x(carint) end when anterior='char' then do refinado=refinado||"'||'"||c2x(carint) end otherwise nop end anterior='byte' if length(bruto)=0 then refinado=refinado||"'x" end else do select when anterior='nada' then do refinado="'"||carint end when anterior='byte' then do refinado=refinado||"'x||'"||carint end when anterior='char' then do refinado=refinado||carint end otherwise nop end anterior='char' if length(bruto)=0 then refinado=refinado||"'" end end if refinado='' then refinado="''" return refinado mulargo: parse arg bruto k=0 troceado="'" do while length(bruto)>0 troceado=troceado||c2x(left(bruto,1)) bruto=right(bruto,length(bruto)-1) k=k+1 if k=32 then do /* Saltar de linea */ k=0 if length(bruto)>0 then troceado=troceado||"'||,"||intro||' '||"'" end end troceado=troceado||"'"||intro return troceado