f_sc_array.srf 1005 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. $PBExportHeader$f_sc_array.srf
  2. global type f_sc_array from function_object
  3. end type
  4. forward prototypes
  5. global subroutine f_sc_array (string arg_scstr)
  6. end prototypes
  7. global subroutine f_sc_array (string arg_scstr);Long ll_cnt
  8. String ls_scstr
  9. Long ll_scid
  10. Long local_scid[]
  11. ls_scstr = arg_scstr
  12. IF Trim(arg_scstr) = '' THEN
  13. local_scid[1] = 0
  14. ELSE
  15. IF sys_power_issuper OR arg_scstr = '0' THEN
  16. DECLARE cur_sc CURSOR FOR
  17. SELECT u_scdef.scID
  18. FROM u_scdef
  19. order by u_scdef.scid desc;
  20. OPEN cur_sc;
  21. FETCH cur_sc INTO :ll_scid;
  22. DO WHILE sqlca.SQLCode = 0
  23. ll_cnt++
  24. local_scid[ll_cnt] = ll_scid
  25. FETCH cur_sc INTO :ll_scid;
  26. LOOP
  27. CLOSE cur_sc;
  28. ELSE
  29. DO WHILE Len(ls_scstr) <> 1
  30. ls_scstr = Replace( ls_scstr, 1, 1, '' )
  31. ll_scid = Long(Left(ls_scstr,Pos(ls_scstr,',',1) - 1))
  32. ll_cnt++
  33. local_scid[ll_cnt] = ll_scid
  34. ls_scstr = Replace ( ls_scstr, 1, Pos(ls_scstr,',',1) - 1, '' )
  35. LOOP
  36. END IF
  37. END IF
  38. sys_user_scid = local_scid
  39. end subroutine