$PBExportHeader$f_checkpz_general.srf global type f_checkpz_general from function_object end type forward prototypes global subroutine f_checkpz_general (long arg_mtrlid, string arg_status, ref s_mtrlcfg_expr arg_s_mtrlcfg[]) end prototypes 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 String ls_status_general,ls_status_general_array[] Long ll_array,ll_array2,i,j,ll_pos,ll_pos_cnt Long ll_cnt_s_mtrlcfg s_mtrlcfg_expr s_mtrlcfg_tmp[] DECLARE cur_pz CURSOR FOR SELECT u_mtrl_configure.name FROM u_mtrl_configure WHERE ( mtrlid = :arg_mtrlid ) AND ( u_mtrl_configure.ifgeneral = 1 ) Order By u_mtrl_configure.Name Asc ; OPEN cur_pz; FETCH cur_pz Into :ls_status_general; DO WHILE sqlca.SQLCode = 0 ll_array++ ls_status_general_array[ll_array] = ls_status_general FETCH cur_pz Into :ls_status_general; LOOP CLOSE cur_pz; ll_array2 = UpperBound(arg_s_mtrlcfg) IF ll_array = 0 THEN f_checkpz(arg_status,s_mtrlcfg_tmp) ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg_tmp) FOR j = 1 To ll_cnt_s_mtrlcfg ll_array2++ arg_s_mtrlcfg[ll_array2].cfgname = s_mtrlcfg_tmp[j].cfgname arg_s_mtrlcfg[ll_array2].qty = s_mtrlcfg_tmp[j].qty NEXT ELSE ls_status = arg_status FOR i = 1 To ll_array ll_pos = Pos(ls_status,ls_status_general_array[i]) IF ll_pos > 0 THEN ll_array2++ arg_s_mtrlcfg[ll_array2].cfgname = Trim(ls_status_general_array[i]) arg_s_mtrlcfg[ll_array2].qty = '1' ls_status_left = Left(ls_status,ll_pos - 1) IF ls_status_left <> '' THEN ls_status_left = Left(ls_status_left,Len(ls_status_left) - 1) f_checkpz_general(arg_mtrlid,ls_status_left,arg_s_mtrlcfg) END IF ls_status_right = Mid(ls_status,ll_pos + Len(Trim(ls_status_general_array[i]))) IF ls_status_right <> '' THEN ls_status_right = Mid(ls_status_right,2) f_checkpz_general(arg_mtrlid,ls_status_right,arg_s_mtrlcfg) END IF ll_pos_cnt++ EXIT END IF NEXT IF ll_pos_cnt = 0 THEN f_checkpz(arg_status,s_mtrlcfg_tmp) ll_cnt_s_mtrlcfg = UpperBound(s_mtrlcfg_tmp) FOR j = 1 To ll_cnt_s_mtrlcfg ll_array2++ arg_s_mtrlcfg[ll_array2].cfgname = s_mtrlcfg_tmp[j].cfgname arg_s_mtrlcfg[ll_array2].qty = s_mtrlcfg_tmp[j].qty NEXT END IF END IF end subroutine