Web Techniques Magazine
May 1996 Volume 1, Issue 2 |
Writing CGI Scripts in REXX
Listing One DeWeb: PROCEDURE; PARSE ARG Input, Opts /* ******************************************* DeWeb converts hex encoded (e.g. %20=space) characters in the Input string to the equivalent ASCII characters and returns the decoded string. If the 2 characters following a % sign do not represent a hexadecimal 2 digit number, then the % and following 2 characters are returned unchanged. If the string terminates with a % then the % sign is returned unchanged. If the final two characters in the string are a % sign followed by a single hexadecimal digit then they are returned unchanged. The optional Options argument contains a set of characters which allows you to tell DeWeb to: '+' convert plus signs (+) to psaces in the input before the hex decoding is done. '*' convert asterisks (*) to percent signs (%) after the decoding. This option is often used with Oracle. Examples: SAY DeWeb('%3Cpre%3e%20%%25Loss %Util%') results in: '<pre> %%Loss %Util%' SAY DeWeb('%3cpre%3eName++Address%','*+') results in '<pre>Name Address*' ******************************************* */ IF POS('+',Opts)/=0 THEN Input=TRANSLATE(Input,' ','+') Start=1; Decoded='' DO WHILE POS('%',SUBSTR(Input,Start))/=0 String=SUBSTR(Input,Start) PARSE VAR String Pre'%'+1 Ch +2 Input IF DATATYPE(Ch,'X') & LENGTH(Ch)=2 THEN Ch=X2C(Ch) ELSE DO; Input=Ch||Input; Ch='%'; END Start=LENGTH(Decoded||Pre||Ch)+1 Input=Decoded||Pre||Ch||Input Decoded=Decoded||Pre||Ch END IF POS('*',Opts)/=0 THEN Input=TRANSLATE(Input,'%','*') RETURN Input
Copyright Web Techniques. All rights reserved.