f_area_array.srf 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. $PBExportHeader$f_area_array.srf
  2. global type f_area_array from function_object
  3. end type
  4. forward prototypes
  5. global subroutine f_area_array (ref string arg_areastr)
  6. end prototypes
  7. global subroutine f_area_array (ref string arg_areastr);Long ll_cnt,cnt
  8. String ls_areastr
  9. Long ll_areaid
  10. Long local_areaid[]
  11. ls_areastr = arg_areastr
  12. IF Trim(arg_areastr) = '' THEN
  13. local_areaid[1] = 0
  14. ELSE
  15. IF sys_power_issuper OR arg_areastr = '0' THEN
  16. sys_areastr = '0'
  17. SELECT count(*) INTO :cnt
  18. FROM u_Cusarea;
  19. IF sqlca.SQLCode <> 0 OR cnt = 0 THEN
  20. ll_cnt++
  21. local_areaid[ll_cnt] = 0
  22. ELSE
  23. DECLARE cur_area CURSOR FOR
  24. SELECT u_Cusarea.CusareaID
  25. FROM u_Cusarea ;
  26. OPEN cur_area;
  27. FETCH cur_area INTO :ll_areaid;
  28. DO WHILE sqlca.SQLCode = 0
  29. ll_cnt++
  30. local_areaid[ll_cnt] = ll_areaid
  31. FETCH cur_area INTO :ll_areaid;
  32. LOOP
  33. CLOSE cur_area;
  34. END IF
  35. ELSE
  36. sys_areastr = arg_areastr
  37. DO WHILE Len(ls_areastr) <> 1
  38. ls_areastr = Replace( ls_areastr, 1, 1, '' )
  39. ll_areaid = Long(Left(ls_areastr,Pos(ls_areastr,',',1) - 1))
  40. ll_cnt++
  41. local_areaid[ll_cnt] = ll_areaid
  42. ls_areastr = Replace ( ls_areastr, 1, Pos(ls_areastr,',',1) - 1, '' )
  43. LOOP
  44. END IF
  45. END IF
  46. sys_areaid = local_areaid
  47. end subroutine