program eco; uses dos; var cadena, salida, aux: String; i, carac,largo, codigoerr : Integer; BEGIN aux:=Paramstr(1); largo:=length(aux); for i:=1 to largo do begin aux[i] :=UpCase(aux[i]); end; if (aux='?') or (aux='/?') or (aux ='HELP') or (aux='/HELP') or (aux='/AYUDA') or (aux='AYUDA') then begin writeln('ECO.EXE concatena los primeros 6 parametros'); writeln('y los envia a la salida estandar. '); writeln('Ademas transforma cadenas hexa precedidas por %'); writeln('o por $ en su caracter correspondiente. Por ejemplo,'); writeln('eco AB%43%44 imprime ABCD.'); writeln('eco PQ$52$53 imprime PQRS'); writeln('eco ab cd ef imprime abcdef'); writeln('Caracteres: %3C < %3E > %5E ^ %0D %0A '); writeln('%24 $ %25 % %3F ? %5C \ %7C | %20 '); exit; end; cadena:=ParamStr(1)+ ParamStr(2)+ ParamStr(3)+ ParamStr(4)+ ParamStr(5) + ParamStr(6); largo := length(cadena); cadena:=cadena + ' '; salida:=''; for i:=1 to largo do begin codigoerr :=1; if (cadena[i] = '%' ) or (cadena[i]='$') then begin aux:= '$' + cadena[i+1] + cadena[i+2]; Val(aux, carac, codigoerr); end; if codigoerr=0 then begin salida:=salida+ Chr(carac); i:=i+2; end else begin salida:=salida+cadena[i]; end; end; write(salida); END.