f_storage_array.srf 1.4 KB

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