f_checkpz_general.srf 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. $PBExportHeader$f_checkpz_general.srf
  2. global type f_checkpz_general from function_object
  3. end type
  4. forward prototypes
  5. global subroutine f_checkpz_general (long arg_mtrlid, string arg_status, ref s_mtrlcfg_expr arg_s_mtrlcfg[])
  6. end prototypes
  7. global subroutine f_checkpz_general (long arg_mtrlid, string arg_status, ref s_mtrlcfg_expr arg_s_mtrlcfg[]);String ls_status,ls_status_left,ls_status_right
  8. String ls_status_general,ls_status_general_array[]
  9. Long ll_array,ll_array2,i,j,ll_pos,ll_pos_cnt
  10. Long ll_cnt_s_mtrlcfg
  11. s_mtrlcfg_expr s_mtrlcfg_tmp[]
  12. DECLARE cur_pz CURSOR FOR
  13. SELECT u_mtrl_configure.name
  14. FROM u_mtrl_configure
  15. WHERE ( mtrlid = :arg_mtrlid ) AND
  16. ( u_mtrl_configure.ifgeneral = 1 )
  17. Order By u_mtrl_configure.Name Asc ;
  18. OPEN cur_pz;
  19. FETCH cur_pz Into :ls_status_general;
  20. DO WHILE sqlca.SQLCode = 0
  21. ll_array++
  22. ls_status_general_array[ll_array] = ls_status_general
  23. FETCH cur_pz Into :ls_status_general;
  24. LOOP
  25. CLOSE cur_pz;
  26. ll_array2 = UpperBound(arg_s_mtrlcfg)
  27. IF ll_array = 0 THEN
  28. f_checkpz(arg_status,s_mtrlcfg_tmp)
  29. ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg_tmp)
  30. FOR j = 1 To ll_cnt_s_mtrlcfg
  31. ll_array2++
  32. arg_s_mtrlcfg[ll_array2].cfgname = s_mtrlcfg_tmp[j].cfgname
  33. arg_s_mtrlcfg[ll_array2].qty = s_mtrlcfg_tmp[j].qty
  34. NEXT
  35. ELSE
  36. ls_status = arg_status
  37. FOR i = 1 To ll_array
  38. ll_pos = Pos(ls_status,ls_status_general_array[i])
  39. IF ll_pos > 0 THEN
  40. ll_array2++
  41. arg_s_mtrlcfg[ll_array2].cfgname = Trim(ls_status_general_array[i])
  42. arg_s_mtrlcfg[ll_array2].qty = '1'
  43. ls_status_left = Left(ls_status,ll_pos - 1)
  44. IF ls_status_left <> '' THEN
  45. ls_status_left = Left(ls_status_left,Len(ls_status_left) - 1)
  46. f_checkpz_general(arg_mtrlid,ls_status_left,arg_s_mtrlcfg)
  47. END IF
  48. ls_status_right = Mid(ls_status,ll_pos + Len(Trim(ls_status_general_array[i])))
  49. IF ls_status_right <> '' THEN
  50. ls_status_right = Mid(ls_status_right,2)
  51. f_checkpz_general(arg_mtrlid,ls_status_right,arg_s_mtrlcfg)
  52. END IF
  53. ll_pos_cnt++
  54. EXIT
  55. END IF
  56. NEXT
  57. IF ll_pos_cnt = 0 THEN
  58. f_checkpz(arg_status,s_mtrlcfg_tmp)
  59. ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg_tmp)
  60. FOR j = 1 To ll_cnt_s_mtrlcfg
  61. ll_array2++
  62. arg_s_mtrlcfg[ll_array2].cfgname = s_mtrlcfg_tmp[j].cfgname
  63. arg_s_mtrlcfg[ll_array2].qty = s_mtrlcfg_tmp[j].qty
  64. NEXT
  65. END IF
  66. END IF
  67. end subroutine