-* File char2hex.fex DEFINE FUNCTION DEC2HEX(DECVAL/I3) HEX/A512 = '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F' || '202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F' || '404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F' || '606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F' || '808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F' || 'A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF' || 'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF' || 'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'; DEC2HEX/A2 = SUBSTR(512, HEX, DECVAL *2 +1, DECVAL *2 +2, 2, DEC2HEX); END DEFINE FUNCTION CHAR2HEX(CHAR/A1) DECVAL/I3 = BYTVAL(CHAR, DECVAL); CHAR2HEX/A2 = DEC2HEX(DECVAL); END
-* File string2hash.fex -DEFAULT &STR = ''; -DEFAULT &OUTPUT = ''; -SET &LEN = &STR.LENGTH; -INCLUDE CHAR2HEX -REPEAT :LOOP FOR &I FROM 1 TO &LEN; -SET &CHAR = SUBSTR(&LEN, &STR, &I, &I, 1, 'A1'); -SET &OUTPUT = &OUTPUT || CHAR2HEX(&CHAR); -:LOOP -TYPE &OUTPUT
-DEFAULT &KEY = 'Some key we''d like to convert to hexadecimal'; -SET &OUTPUT = ''; -INCLUDE STRING2HASH -SET &HOLDFILE = 'YADAYADA_' || &OUTPUT; TABLE FILE YADAYADA PRINT * BY ARTICLE_CODE WHERE KEY EQ '&KEY'; ON TABLE HOLD AS FOCCACHE/&HOLDFILE FORMAT FOCUS INDEX KEY END
DEFINE FUNCTION DEC2HEX(DECVAL/I3) NUMBFST/I3 = INT(DECVAL / 16); NUMBLST/I3 = DECVAL - (16 * NUMBFST); SNGLFST/A1 = FPRINT(NUMBFST, 'I1', 'A1'); SNGLLST/A1 = FPRINT(NUMBLST, 'I1', 'A1'); CHARFST/A1 = IF (DECODE NUMBFST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X')) EQ 'X' THEN SNGLFST ELSE DECODE NUMBFST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); CHARLST/A1 = IF (DECODE NUMBLST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X')) EQ 'X' THEN SNGLLST ELSE DECODE NUMBLST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); DEC2HEX/A2 = CHARFST || CHARLST; END -RUN -REPEAT :Loop FOR &CHARVAL FROM 0 TO 255; -SET &CHARHEX = DEC2HEX(&CHARVAL); -TYPE &CHARVAL &CHARHEX -:Loop
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
DEFINE FUNCTION DEC2HEX(DECVAL/I3) NUMBFST/I3 = INT(DECVAL / 16); NUMBLST/I3 = DECVAL - (16 * NUMBFST); CHARFST/A1 = DECODE NUMBFST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); CHARLST/A1 = DECODE NUMBLST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); CHARFST/A1 = IF CHARFST EQ 'X' THEN FPRINT(NUMBFST, 'I1', 'A1') ELSE CHARFST; CHARLST/A1 = IF CHARLST EQ 'X' THEN FPRINT(NUMBLST, 'I1', 'A1') ELSE CHARLST; DEC2HEX/A2 = CHARFST || CHARLST; END -RUN -REPEAT :Loop FOR &CHARVAL FROM 0 TO 255; -SET &CHARHEX = DEC2HEX(&CHARVAL); -TYPE &CHARVAL &CHARHEX -:Loop
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
-DEFAULT &KEY = 'Some key we''d like to convert to hexadecimal'; DEFINE FUNCTION DEC2HEX(DECVAL/I3) NUMBFST/I3 = INT(DECVAL / 16); NUMBLST/I3 = DECVAL - (16 * NUMBFST); CHARFST/A1 = DECODE NUMBFST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); CHARLST/A1 = DECODE NUMBLST(10 'A' 11 'B' 12 'C' 13 'D' 14 'E' 15 'F' ELSE 'X'); CHARFST/A1 = IF CHARFST EQ 'X' THEN FPRINT(NUMBFST, 'I1', 'A1') ELSE CHARFST; CHARLST/A1 = IF CHARLST EQ 'X' THEN FPRINT(NUMBLST, 'I1', 'A1') ELSE CHARLST; DEC2HEX/A2 = CHARFST || CHARLST; END -RUN FILEDEF STR2CONV DISK STR2CONV.ftm -RUN EX -LINES 5 EDAPUT MASTER,STR2CONV,CF,MEM,FILENAME=STR2CONV, SUFFIX=FIX,$ SEGNAME=ONE, SEGTYPE=S0, $ FIELD=CHARSTRING, ,A&KEY.LENGTH ,A&KEY.LENGTH ,$ SEGNAME=TWO, PARENT=ONE, OCCURS=&KEY.LENGTH, POSITION=CHARSTRING, SEGTYPE=S, $ FIELD=CHAR, ,A1 ,A1 ,$ -RUN -WRITE STR2CONV &KEY -RUN TABLE FILE STR2CONV PRINT COMPUTE HEXCHARS/A2 = DEC2HEX(BYTVAL(CHAR, 'I3')); COMPUTE ORDER/I3 = ORDER + 1; BY CHARSTRING NOPRINT ON TABLE HOLD AS TEMPHLD1 END -RUN TABLE FILE TEMPHLD1 SUM HEXCHARS AS 'OUTPUT' ACROSS ORDER NOPRINT ON TABLE SAVE AS CHAROUT ON TABLE SET HOLDLIST PRINTONLY ON TABLE SET ASNAMES ON END -RUN -SET &OutLen = &KEY.LENGTH * 2; -READ CHAROUT &OUTPUT.A&OutLen.EVAL -TYPE &OUTPUT
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
-SET &CHAR2HEX='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; DEFINE FILE CAR OUT/A72=UFMT('&CHAR2HEX', 36, 'A72'); END TABLE FILE CAR PRINT COMPUTE HEX/A20 = UFMT(COUNTRY,10,'A20'); OUT BY COUNTRY END
TABLE FILE CAR PRINT COUNTRY/U20 BY COUNTRY ON TABLE SET ONLINE-FMT STANDARD AND PAGE NOLEAD END 1 COUNTRY COUNTRY ------- ------- ENGLAND 454E474C414E4420202020202020202020202020 FRANCE 4652414E43452020202020202020202020202020 ITALY 4954414C59202020202020202020202020202020 JAPAN 4A4150414E202020202020202020202020202020 W GERMANY 57204745524D414E592020202020202020202020
quote:Any reason why you wouldn't use UFMT?
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
FILENAME=car, SUFFIX=FOC , $ SEGMENT=ORIGIN, SEGTYPE=S1, $ FIELDNAME=COUNTRY, ALIAS=COUNTRY, USAGE=A10, FIELDTYPE=I, $ SEGMENT=COMP, SEGTYPE=S1, PARENT=ORIGIN, $ FIELDNAME=CAR, ALIAS=CARS, USAGE=U16, $ . . . DEFINE FILE CAR X_COUNTRY/U10 = COUNTRY; END TABLEF FILE CAR PRINT COUNTRY X_COUNTRY CAR END
-SET &ECHO=ALL; -SET &INPUT = 'Some key we'd like to convert to hexadecimal'; -SET &LEN = &INPUT.LENGTH*2; SQL SQLMSS SELECT master.dbo.fn_varbintohexstr(CAST(&INPUT.QUOTEDSTRING AS VARBINARY)); TABLE HOLD END -RUN -READ HOLD &0x.2 &OUTPUT.&LEN.EVAL -TYPE &OUTPUT