f_storage_array.srf 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 (string arg_storagestr, string arg_storagestr_new, string arg_storagestr_audit)
  6. end prototypes
  7. global subroutine f_storage_array (string arg_storagestr, string arg_storagestr_new, string arg_storagestr_audit);Long ll_cnt,cnt,ll_cnt_new,ll_cnt_audit
  8. String ls_storagestr,ls_storagestr_new,ls_storagestr_audit
  9. Long ll_storageid
  10. Long local_storageid[],local_storageid_new[],local_storageid_audit[]
  11. ls_storagestr = arg_storagestr
  12. ls_storagestr_new = arg_storagestr_new
  13. ls_storagestr_audit = arg_storagestr_audit
  14. IF Trim(arg_storagestr) = '' OR Trim(arg_storagestr) = '-1' THEN
  15. local_storageid[1] = 0
  16. ELSE
  17. IF sys_power_issuper OR arg_storagestr = '0' THEN
  18. SELECT count(*) INTO :cnt
  19. FROM u_storage;
  20. IF sqlca.SQLCode <> 0 OR cnt = 0 THEN
  21. ll_cnt++
  22. local_storageid[ll_cnt] = 0
  23. ELSE
  24. DECLARE cur_storage CURSOR FOR
  25. SELECT u_storage.storageID
  26. FROM u_storage
  27. Order By u_storage.storageID Desc;
  28. OPEN cur_storage;
  29. FETCH cur_storage INTO :ll_storageid;
  30. DO WHILE sqlca.SQLCode = 0
  31. ll_cnt++
  32. local_storageid[ll_cnt] = ll_storageid
  33. FETCH cur_storage INTO :ll_storageid;
  34. LOOP
  35. CLOSE cur_storage;
  36. END IF
  37. ELSE
  38. DO WHILE Len(ls_storagestr) <> 1
  39. ls_storagestr = Replace( ls_storagestr, 1, 1, '' )
  40. ll_storageid = Long(Left(ls_storagestr,Pos(ls_storagestr,',',1) - 1))
  41. ll_cnt++
  42. local_storageid[ll_cnt] = ll_storageid
  43. ls_storagestr = Replace ( ls_storagestr, 1, Pos(ls_storagestr,',',1) - 1, '' )
  44. LOOP
  45. END IF
  46. END IF
  47. IF Trim(arg_storagestr_new) = '' OR Trim(arg_storagestr_new) = '-1' THEN
  48. local_storageid_new[1] = 0
  49. ELSE
  50. IF sys_power_issuper OR arg_storagestr_new = '0' THEN
  51. SELECT count(*) INTO :cnt
  52. FROM u_storage;
  53. IF sqlca.SQLCode <> 0 OR cnt = 0 THEN
  54. ll_cnt_new++
  55. local_storageid_new[ll_cnt_new] = 0
  56. ELSE
  57. DECLARE cur_storage_new CURSOR FOR
  58. SELECT u_storage.storageID
  59. FROM u_storage
  60. Order By u_storage.storageID Desc;
  61. OPEN cur_storage_new;
  62. FETCH cur_storage_new INTO :ll_storageid;
  63. DO WHILE sqlca.SQLCode = 0
  64. ll_cnt_new++
  65. local_storageid_new[ll_cnt_new] = ll_storageid
  66. FETCH cur_storage_new INTO :ll_storageid;
  67. LOOP
  68. CLOSE cur_storage_new;
  69. END IF
  70. ELSE
  71. DO WHILE Len(ls_storagestr_new) <> 1
  72. ls_storagestr_new = Replace( ls_storagestr_new, 1, 1, '' )
  73. ll_storageid = Long(Left(ls_storagestr_new,Pos(ls_storagestr_new,',',1) - 1))
  74. ll_cnt_new++
  75. local_storageid_new[ll_cnt_new] = ll_storageid
  76. ls_storagestr_new = Replace ( ls_storagestr_new, 1, Pos(ls_storagestr_new,',',1) - 1, '' )
  77. LOOP
  78. END IF
  79. END IF
  80. IF Trim(arg_storagestr_audit) = '' OR Trim(arg_storagestr_audit) = '-1' THEN
  81. local_storageid_audit[1] = 0
  82. ELSE
  83. IF sys_power_issuper OR arg_storagestr_audit = '0' THEN
  84. SELECT count(*) INTO :cnt
  85. FROM u_storage;
  86. IF sqlca.SQLCode <> 0 OR cnt = 0 THEN
  87. ll_cnt_audit++
  88. local_storageid_audit[ll_cnt_audit] = 0
  89. ELSE
  90. DECLARE cur_storage_audit CURSOR FOR
  91. SELECT u_storage.storageID
  92. FROM u_storage
  93. Order By u_storage.storageID Desc;
  94. OPEN cur_storage_audit;
  95. FETCH cur_storage_audit INTO :ll_storageid;
  96. DO WHILE sqlca.SQLCode = 0
  97. ll_cnt_audit++
  98. local_storageid_audit[ll_cnt_audit] = ll_storageid
  99. FETCH cur_storage_audit INTO :ll_storageid;
  100. LOOP
  101. CLOSE cur_storage_audit;
  102. END IF
  103. ELSE
  104. DO WHILE Len(ls_storagestr_audit) <> 1
  105. ls_storagestr_audit = Replace( ls_storagestr_audit, 1, 1, '' )
  106. ll_storageid = Long(Left(ls_storagestr_audit,Pos(ls_storagestr_audit,',',1) - 1))
  107. ll_cnt_audit++
  108. local_storageid_audit[ll_cnt_audit] = ll_storageid
  109. ls_storagestr_audit = Replace ( ls_storagestr_audit, 1, Pos(ls_storagestr_audit,',',1) - 1, '' )
  110. LOOP
  111. END IF
  112. END IF
  113. sys_user_storageid = local_storageid
  114. //sys_user_storageid_new = local_storageid_new
  115. //sys_user_storageid_audit = local_storageid_audit
  116. end subroutine