Re: Help: writing stored procedure
Posted in 1996
>> >>Mike wrote :--- >> >>I need to write a stored procedure that will convert a >>long value into a 3 character base 36 string. The 36 >>digits are 0123456789ABCD...Z. An example would be >>that the number 13330 would be converted to "AAA". >> >>This can be shown: >> >>(10 X 36squared) + (10 X 36) + (10 X 1) = 13330 >> 'A' 'A' 'A' = "AAA" >> >>Thanks, >>Mike >> >> I wrote a 4gl function to do this in a hurry. Probably u can refine this and implement in SPL. Hope this helps ____________ Sanjay Kumar Email: skumar@raileurope.com Rail Europe Inc. 226 Westchester Ave | Office : (914) 681 3296 White Plains, NY 10604 | Fax : (914) 682 5236 __________________________ cut here ____________________________________ main define inp decimal(16,0) define out char(30) define res decimal(16,2) define rem smallint define divisor smallint define intm integer define ctr smallint define fmt char(1) LET out = NULL LET divisor = 36 LET inp = arg_val(1) IF inp is NULL THEN DISPLAY "give your input #" EXIT PROGRAM END IF display " the input given is ", inp LET ctr = 30 LET intm = inp WHILE (1) LET res = intm / divisor LET rem = intm MOD divisor IF res = 0 THEN EXIT WHILE END IF CALL format_rem(rem) RETURNING fmt LET out[ctr-1] = fmt LET ctr = ctr - 1 LET intm = res END WHILE display " the final result is ", out end main function format_rem(rem) define rem smallint define fmt char(1) CASE WHEN ( rem >= 0 and rem <= 9 ) LET fmt = rem EXIT CASE WHEN rem = 10 LET fmt = "A" EXIT CASE WHEN rem = 11 LET fmt = "B" EXIT CASE WHEN rem = 12 LET fmt = "C" EXIT CASE WHEN rem = 13 LET fmt = "D" EXIT CASE WHEN rem = 14 LET fmt = "E" EXIT CASE WHEN rem = 15 LET fmt = "F" EXIT CASE WHEN rem = 16 LET fmt = "G" EXIT CASE WHEN rem = 17 LET fmt = "H" EXIT CASE WHEN rem = 18 LET fmt = "I" EXIT CASE WHEN rem = 19 LET fmt = "J" EXIT CASE WHEN rem = 20 LET fmt = "K" EXIT CASE WHEN rem = 21 LET fmt = "L" EXIT CASE WHEN rem = 22 LET fmt = "M" EXIT CASE WHEN rem = 23 LET fmt = "N" EXIT CASE WHEN rem = 24 LET fmt = "O" EXIT CASE WHEN rem = 25 LET fmt = "P" EXIT CASE WHEN rem = 26 LET fmt = "Q" EXIT CASE WHEN rem = 27 LET fmt = "R" EXIT CASE WHEN rem = 28 LET fmt = "S" EXIT CASE WHEN rem = 29 LET fmt = "T" EXIT CASE WHEN rem = 30 LET fmt = "U" EXIT CASE WHEN rem = 31 LET fmt = "V" EXIT CASE WHEN rem = 32 LET fmt = "W" EXIT CASE WHEN rem = 33 LET fmt = "X" EXIT CASE WHEN rem = 34 LET fmt = "Y" EXIT CASE WHEN rem = 35 LET fmt = "Z" EXIT CASE END CASE RETURN fmt end function __________________________ cut here _____________________________________