Frank | |
prod: WF 7.6.10 platform Windows, databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7 test: WF 7.6.10 on the same platform and databases,IE7 |
-SET &base=36; -SET &num = 99999; -* -SET &string = '0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -SET &value = '' ; -* -REPEAT ENDREPEAT WHILE &num NE 0; -SET &div = &num / &base; -SET &rem = &num - (&div * &base); -SET &token = &rem + 1; -SET &char = GETTOK(&string, 71, &token.EVAL, ',', 1, 'A1'); -SET &value = '&char.EVAL' || '&value.EVAL'; -SET &num = ÷ -ENDREPEAT -TYPE &value
-SET &basein=16; -SET &baseout=8; -SET &numin = AAAAA; -DEFAULTH &numout = 0 -* -SET &stringin = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; -SET &stringout = '0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -SET &value = '' ; -* -SET &tpos=&numin.LENGTH +1; -SET &power= &numin.LENGTH; -SET &partno=1; -REPEAT BASEIN WHILE &partno NE &tpos; -SET &part = SUBSTR(&numin.LENGTH, '&numin.EVAL', &partno, &partno, 1, 'A1'); -SET &mod = POSIT(&stringin, 36, '&part.EVAL', 1, 'I2'); -SET &valout = 0; -SET &valout = ((&mod -1) * (&basein ** (&power -1))); -SET &numout = &numout + &valout; -SET &power = &power -1; -SET &partno=&partno + 1; -BASEIN -* -REPEAT BASEOUT WHILE &numout NE 0; -SET &div = &numout / &baseout; -SET &rem = &numout - (&div * &baseout); -SET &token = &rem + 1; -SET &char = GETTOK(&stringout, 71, &token.EVAL, ',', 1, 'A1'); -SET &value = '&char.EVAL' || '&value.EVAL'; -SET &numout = ÷ -BASEOUT -TYPE &value
DEFINE FILE yourfile BASE/I2=36; CHARS/A36='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; I/I10=NUMBER; Z/I2 = IMOD(I,BASE,'I2'); I=INT(I/BASE); Y/I2 = IMOD(I,BASE,'I2'); I=INT(I/BASE); X/I2 = IMOD(I,BASE,'I2'); XX/A1=SUBSTR(36,CHARS,X+1,X+1,1,'A1'); YY/A1=SUBSTR(36,CHARS,Y+1,Y+1,1,'A1'); ZZ/A1=SUBSTR(36,CHARS,Z+1,Z+1,1,'A1'); CODE/A4='A' | XX | YY |ZZ; CHECK/I10 = X*BASE*BASE + Y*BASE + Z; END TABLE FILE yourfile LIST NUMBER X Y Z CODE CHECK END
DEFINE FILE file BASE/I2=36; CHARS/A36='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; I/I10=NUMBER; Z/I2 = IMOD(I,BASE,'I2'); I=INT(I/BASE); Y/I2 = IMOD(I,BASE,'I2'); I=INT(I/BASE); X/I2 = IMOD(I,BASE,'I2'); I=INT(I/BASE); W/I2 = IMOD(I,BASE,'I2'); WW/A1=SUBSTR(36,CHARS,W+11,W+11,1,'A1'); XX/A1=SUBSTR(36,CHARS,X+1,X+1,1,'A1'); YY/A1=SUBSTR(36,CHARS,Y+1,Y+1,1,'A1'); ZZ/A1=SUBSTR(36,CHARS,Z+1,Z+1,1,'A1'); CODE/A4= WW | XX | YY |ZZ; END TABLE FILE file PRINT CODE BY NUMBER END
-SET &base=36; -SET &number = 0; -SET &step = 5; -SET &limit = 1000; -* -SET &string = '0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'; -* -REPEAT ENDLOOP WHILE &number LT &limit; -SET &value = '' ; -SET &number = &number + &step; -SET &num = &number; -REPEAT ENDREPEAT WHILE &num NE 0; -SET &div = &num / &base; -SET &rem = &num - (&div * &base); -SET &token = &rem + 1; -SET &char = GETTOK(&string, 71, &token.EVAL, ',', 1, 'A1'); -SET &value = '&char.EVAL' || '&value.EVAL'; -SET &num = ÷ -ENDREPEAT -TYPE Decimal .. &number -- Base 16 &value -ENDLOOP