doto+java_说什么java集成不好,要我用4gl来写一段Do欠料分析

1.[代码]传说中的4gl,这是那门子的语言

FUNCTION t900_b_fill(p_wc2) #BODY FILL UP

DEFINE

p_wc2 LIKE type_file.chr1000 #No.FUN-680136 VARCHAR(200)

DEFINE qty LIKE tc_spd_file.tc_spd07

DEFINE delivery_qty LIKE tc_spd_file.tc_spd07

DEFINE total_delivery_qty LIKE tc_spd_file.tc_spd07

DEFINE l_startDatetime LIKE type_file.chr18

DEFINE l_tc_spd12 LIKE tc_spd_file.tc_spd12

DEFINE l_tc_spd12_title LIKE type_file.chr18

DEFINE l_row_cnt INT

DEFINE q_img10 LIKE img_file.img10

DEFINE q2_img10 LIKE img_file.img10

DEFINE l_timeNum LIKE type_file.num5

DEFINE l_i LIKE type_file.num5

DEFINE n_i LIKE type_file.num5

DEFINE m_cnt LIKE type_file.num5

DEFINE l_cnt LIKE type_file.num5

DEFINE i_cnt LIKE type_file.num5

DEFINE l_str LIKE type_file.chr1000

DEFINE l_Datetime LIKE type_file.chr1000

DEFINE s_Datetime LIKE type_file.chr1000

DEFINE l_table STRING

DEFINE temp_table STRING

DEFINE s STRING

DEFINE z STRING

DEFINE n INT

DEFINE m INT

DEFINE o INT

DEFINE p INT

DEFINE a STRING

DEFINE l_sum LIKE tc_spd_file.tc_spd07 # 数量

DEFINE cellCount LIKE type_file.num5 #列数

DEFINE l_tc_spd03 LIKE tc_spd_file.tc_spd03, # 料号

l_tc_spd04 LIKE tc_spd_file.tc_spd04, # 品名

l_tc_spd05 LIKE tc_spd_file.tc_spd03, # 地址

l_tc_spd06 LIKE tc_spd_file.tc_spd08, # 日期

l_tc_spd07 LIKE tc_spd_file.tc_spd09, # 时间

l_tc_spd08 LIKE tc_spd_file.tc_spd07,

s_tc_spd03 LIKE tc_spd_file.tc_spd03,

s_tc_spd04 LIKE tc_spd_file.tc_spd04,

s_tc_spd05 LIKE tc_spd_file.tc_spd03,

s_tc_spd06 LIKE tc_spd_file.tc_spd08,

s_tc_spd07 LIKE tc_spd_file.tc_spd09,

s_tc_spd08 LIKE tc_spd_file.tc_spd07,

LessQ LIKE tc_spd_file.tc_spd07,

LessS LIKE tc_spd_file.tc_spd07

DEFINE c01 LIKE tc_spd_file.tc_spd03,

t01 LIKE tc_spd_file.tc_spd07,

t02 LIKE tc_spd_file.tc_spd07,

t03 LIKE tc_spd_file.tc_spd07,

t04 LIKE tc_spd_file.tc_spd07,

t05 LIKE tc_spd_file.tc_spd07,

t06 LIKE tc_spd_file.tc_spd07,

t07 LIKE tc_spd_file.tc_spd07,

t08 LIKE tc_spd_file.tc_spd07,

t09 LIKE tc_spd_file.tc_spd07,

t10 LIKE tc_spd_file.tc_spd07,

t11 LIKE tc_spd_file.tc_spd07,

t12 LIKE tc_spd_file.tc_spd07,

t13 LIKE tc_spd_file.tc_spd07,

t14 LIKE tc_spd_file.tc_spd07,

t15 LIKE tc_spd_file.tc_spd07,

t16 LIKE tc_spd_file.tc_spd07,

t17 LIKE tc_spd_file.tc_spd07,

t18 LIKE tc_spd_file.tc_spd07,

t19 LIKE tc_spd_file.tc_spd07,

t20 LIKE tc_spd_file.tc_spd07,

t21 LIKE tc_spd_file.tc_spd07,

t22 LIKE tc_spd_file.tc_spd07,

t23 LIKE tc_spd_file.tc_spd07,

t24 LIKE tc_spd_file.tc_spd07,

t25 LIKE tc_spd_file.tc_spd07,

t26 LIKE tc_spd_file.tc_spd07,

t27 LIKE tc_spd_file.tc_spd07,

t28 LIKE tc_spd_file.tc_spd07,

t29 LIKE tc_spd_file.tc_spd07,

t30 LIKE tc_spd_file.tc_spd07,

t31 LIKE tc_spd_file.tc_spd07

CALL cl_del_data(l_table1)

LET g_sql = "INSERT INTO ",g_cr_db_str CLIPPED,l_table1 CLIPPED," VALUES(?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?)"

PREPARE insert_prep1 FROM g_sql

IF STATUS THEN

CALL cl_err('insert_prep1:',status,1) EXIT PROGRAM

END IF

LET g_sql =

"SELECT distinct tc_spd03,tc_spd04 FROM TC_SDT_FILE WHERE tc_spd01 ='",g_sph.tc_sph01,"' AND ", p_wc2 CLIPPED, #單身

" order by tc_spd03"

PREPARE t900_pb FROM g_sql

DECLARE qcp_cs CURSOR FOR t900_pb

CALL g_spds.clear()

LET g_cnt = 1

LET g_rec_b = 0

CALL cl_set_comp_att_text("ogb16",'在制量')

FOREACH qcp_cs INTO g_spds[g_cnt].tc_spd03,g_spds[g_cnt].tc_spd04 #單身 ARRAY 填充

IF SQLCA.sqlcode THEN

CALL cl_err('foreach:',SQLCA.sqlcode,1)

EXIT FOREACH

END IF

#Edson 品名

#Edson SELECT ima02 INTO g_spds[g_cnt].tc_spd04 FROM ima_file WHERE ima01 = g_spds[g_cnt].tc_spd03

#Edson 库存总量

SELECT SUM(img10) INTO g_spds[g_cnt].img10 FROM img_file WHERE img01 = g_spds[g_cnt].tc_spd03 AND img22 = 'S' AND img23 = 'Y'

IF cl_null(g_spds[g_cnt].img10) THEN LET g_spds[g_cnt].img10 = 0 END IF

#Edson 在制量

SELECT SUM(sfb08-sfb09) INTO g_spds[g_cnt].ogb16 FROM sfb_file WHERE sfb05 = g_spds[g_cnt].tc_spd03 AND sfb04 <> '8' AND sfb87 <> 'X'

IF cl_null(g_spds[g_cnt].ogb16) OR g_spds[g_cnt].ogb16 < 0 THEN LET g_spds[g_cnt].ogb16 = 0 END IF

LET g_sql ="select tc_spd03,tc_spd04,tc_spd05,tc_spd06,tc_spd07,tc_spd08 ,",

"to_date(to_char(tc_spd06,'yyyy-MM-dd')||' '||tc_spd07,'yyyy-mm-dd hh24:mi:ss')",

"FROM TC_SDT_FILE WHERE tc_spd01 ='",g_sph.tc_sph01,"' AND tc_spd03 ='",g_spds[g_cnt].tc_spd03,"' AND ", p_wc2 CLIPPED,

" order by tc_spd03"

PREPARE t900_pb2 FROM g_sql

DECLARE qcp_cs2 CURSOR FOR t900_pb2

#Edson动态表单title取法

IF g_spds[1].tc_spd03 = g_spds[g_cnt].tc_spd03 THEN

LET l_cnt = 1

FOREACH qcp_cs2 INTO l_tc_spd03,l_tc_spd04,l_tc_spd05,l_tc_spd06,l_tc_spd07,l_tc_spd08,l_Datetime

IF SQLCA.sqlcode THEN

CALL cl_err('foreach:',SQLCA.sqlcode,1)

EXIT FOREACH

END IF

LET g_spa[l_cnt].l_str = l_Datetime # CLIPPED," ",l_tc_spd05 CLIPPED #Edson保存列名称

LET l_cnt = l_cnt + 1

IF l_cnt > g_max_rec THEN

CALL cl_err( '', 9035, 0 )

EXIT FOREACH

END IF

END FOREACH

LET l_sum = 0

#Edson获得第一行的列数

SELECT COUNT(l_tc_spd03) INTO cellCount FROM TC_SDT_FILE WHERE tc_spd01 =g_sph.tc_sph01 AND tc_spd03 =g_spds[g_cnt].tc_spd03

#Edson填充标题

FOR l_i = 1 TO 30

LET g_field = "tc_spa",l_i USING "&

LET g_field2 = "tc_spb",l_i USING "&

IF l_i <= cellCount THEN

LET g_fields[l_i] = g_spa[l_i].l_str #保存单身列名

LET l_str = g_spa[l_i].l_str CLIPPED," ","(欠)" CLIPPED

CALL cl_set_comp_att_text(g_field,g_spa[l_i].l_str)

CALL cl_set_comp_att_text(g_field2,l_str)

#Edson 4gl没有对象概念此玩法没用

#Edson LET g_fields[l_i] = "g_spds[",g_cnt,"]." CLIPPED,g_fields[l_i] #Edson保存行控件名称

#Edson LET g_spds[g_cnt].g_fields[l_i] = g_spa[l_i].l_tc_spd08

#Edson LET l_sum = l_sum+g_spa[l_i].l_tc_spd08

CALL cl_set_comp_visible(g_field,TRUE)

CALL cl_set_comp_visible(g_field2,TRUE)

ELSE

CALL cl_set_comp_visible(g_field,FALSE)

CALL cl_set_comp_visible(g_field2,FALSE)

END IF

END FOR

END IF

#Edson END动态表单title取法

#Edson动态表 单数据取法

CALL g_nums.clear()

LET t31 = 0

PREPARE t900_pb3 FROM g_sql

DECLARE qcp_cs3 CURSOR FOR t900_pb3

LET i_cnt = 1

FOREACH qcp_cs3 INTO s_tc_spd03,s_tc_spd04,s_tc_spd05,s_tc_spd06,s_tc_spd07,s_tc_spd08,s_Datetime

IF SQLCA.sqlcode THEN

CALL cl_err('foreach:',SQLCA.sqlcode,1)

EXIT FOREACH

END IF

LET g_nums[i_cnt] = s_tc_spd08 #Edson保存数量到数组

LET t31 = t31+g_nums[i_cnt] #Edson每行的需求总量

#库存数据递减

IF (g_spds[g_cnt].img10) > g_nums[i_cnt] THEN

IF i_cnt = 1 THEN

LET g_LessQ[i_cnt] = 0 #欠料量

LET g_LessS[i_cnt] = (g_spds[g_cnt].img10) - g_nums[i_cnt] #剩余库存

ELSE

IF g_LessS[i_cnt-1] >= g_nums[i_cnt] THEN

LET g_LessQ[i_cnt] = 0 #欠料量

LET g_LessS[i_cnt] = g_LessS[i_cnt-1] - g_nums[i_cnt] #上一个时间点的剩余库存 - 当前需求数量

ELSE

LET g_LessQ[i_cnt] = g_nums[i_cnt] - g_LessS[i_cnt-1] #欠料量

LET g_LessS[i_cnt] = 0 #当前剩余库存

END IF

END IF

ELSE

IF i_cnt = 1 THEN

LET g_LessQ[i_cnt] = g_nums[i_cnt] - (g_spds[g_cnt].img10) #欠料量

LET g_LessS[i_cnt] = 0 #剩余库存

ELSE

IF g_LessS[i_cnt-1] >= g_nums[i_cnt] THEN

LET g_LessQ[i_cnt] = 0 #欠料量

LET g_LessS[i_cnt] = g_LessS[i_cnt-1] - g_nums[i_cnt] #上一个时间点的剩余库存 - 当前需求数量

ELSE

LET g_LessQ[i_cnt] = g_nums[i_cnt] - g_LessS[i_cnt-1] #欠料量

LET g_LessS[i_cnt] = 0 #当前剩余库存

END IF

END IF

END IF

#Edson 动态递减库存

LET i_cnt = i_cnt + 1

IF i_cnt > g_max_rec THEN

CALL cl_err( '', 9035, 0 )

EXIT FOREACH

END IF

END FOREACH

#Edson插入数据到表把纵向变横向数据

EXECUTE insert_prep1 USING s_tc_spd03,

g_nums[01],g_nums[02], g_nums[03],

g_nums[04],g_nums[05], g_nums[06],

g_nums[07],g_nums[08], g_nums[09],

g_nums[10],g_nums[11], g_nums[12],

g_nums[13],g_nums[14], g_nums[15],

g_nums[16],g_nums[17], g_nums[18],

g_nums[19],g_nums[20], g_nums[21],

g_nums[22],g_nums[23], g_nums[24],

g_nums[25],g_nums[26], g_nums[27],

g_nums[28],g_nums[29], g_nums[30],t31

#Edson END动态表单数据取法

LET g_spds[g_cnt].tc_spb01 = g_LessQ[1]

LET g_spds[g_cnt].tc_spb02 = g_LessQ[2]

LET g_spds[g_cnt].tc_spb03 = g_LessQ[3]

LET g_spds[g_cnt].tc_spb04 = g_LessQ[4]

LET g_spds[g_cnt].tc_spb05 = g_LessQ[5]

LET g_spds[g_cnt].tc_spb06 = g_LessQ[6]

LET g_spds[g_cnt].tc_spb07 = g_LessQ[7]

LET g_spds[g_cnt].tc_spb08 = g_LessQ[8]

LET g_spds[g_cnt].tc_spb09 = g_LessQ[9]

LET g_spds[g_cnt].tc_spb10 = g_LessQ[10]

LET g_spds[g_cnt].tc_spb11 = g_LessQ[11]

LET g_spds[g_cnt].tc_spb12 = g_LessQ[12]

LET g_spds[g_cnt].tc_spb13 = g_LessQ[13]

LET g_spds[g_cnt].tc_spb14 = g_LessQ[14]

LET g_spds[g_cnt].tc_spb15 = g_LessQ[15]

LET g_spds[g_cnt].tc_spb16 = g_LessQ[16]

LET g_spds[g_cnt].tc_spb17 = g_LessQ[17]

LET g_spds[g_cnt].tc_spb18 = g_LessQ[18]

LET g_spds[g_cnt].tc_spb19 = g_LessQ[19]

LET g_spds[g_cnt].tc_spb20 = g_LessQ[20]

LET g_spds[g_cnt].tc_spb21 = g_LessQ[21]

LET g_spds[g_cnt].tc_spb22 = g_LessQ[22]

LET g_spds[g_cnt].tc_spb23 = g_LessQ[23]

LET g_spds[g_cnt].tc_spb24 = g_LessQ[24]

LET g_spds[g_cnt].tc_spb25 = g_LessQ[25]

LET g_spds[g_cnt].tc_spb26 = g_LessQ[26]

LET g_spds[g_cnt].tc_spb27 = g_LessQ[27]

LET g_spds[g_cnt].tc_spb28 = g_LessQ[28]

LET g_spds[g_cnt].tc_spb29 = g_LessQ[29]

LET g_spds[g_cnt].tc_spb30 = g_LessQ[30]

LET g_cnt = g_cnt + 1

IF g_cnt > g_max_rec THEN

CALL cl_err( '', 9035, 0 )

EXIT FOREACH

END IF

END FOREACH

#Edson查询横向动态填充数据到单身

LET l_sql ="SELECT * FROM ",g_cr_db_str CLIPPED,l_table1 CLIPPED,

" order by tc_sdt01"

PREPARE q900a_pre FROM l_sql

DECLARE q900a_cur CURSOR FOR q900a_pre

LET m_cnt = 1

FOREACH q900a_cur INTO c01,

t01,t02,t03,t04,t05,t06,

t07,t08,t09,t10,t11,t12,

t13,t14,t15,t16,t17,t18,

t19,t20,t21,t22,t23,t24,

t25,t26,t27,t28,t29,t30,t31

IF SQLCA.sqlcode THEN

CALL cl_err('Foreach:',SQLCA.sqlcode,1)

EXIT FOREACH

END IF

LET g_spds[m_cnt].tc_spa01 = t01

LET g_spds[m_cnt].tc_spa02 = t02

LET g_spds[m_cnt].tc_spa03 = t03

LET g_spds[m_cnt].tc_spa04 = t04

LET g_spds[m_cnt].tc_spa05 = t05

LET g_spds[m_cnt].tc_spa06 = t06

LET g_spds[m_cnt].tc_spa07 = t07

LET g_spds[m_cnt].tc_spa08 = t08

LET g_spds[m_cnt].tc_spa09 = t09

LET g_spds[m_cnt].tc_spa10 = t10

LET g_spds[m_cnt].tc_spa11 = t11

LET g_spds[m_cnt].tc_spa12 = t12

LET g_spds[m_cnt].tc_spa13 = t13

LET g_spds[m_cnt].tc_spa14 = t14

LET g_spds[m_cnt].tc_spa15 = t15

LET g_spds[m_cnt].tc_spa16 = t16

LET g_spds[m_cnt].tc_spa17 = t17

LET g_spds[m_cnt].tc_spa18 = t18

LET g_spds[m_cnt].tc_spa19 = t19

LET g_spds[m_cnt].tc_spa20 = t20

LET g_spds[m_cnt].tc_spa21 = t21

LET g_spds[m_cnt].tc_spa22 = t22

LET g_spds[m_cnt].tc_spa23 = t23

LET g_spds[m_cnt].tc_spa24 = t24

LET g_spds[m_cnt].tc_spa25 = t25

LET g_spds[m_cnt].tc_spa26 = t26

LET g_spds[m_cnt].tc_spa27 = t27

LET g_spds[m_cnt].tc_spa28 = t28

LET g_spds[m_cnt].tc_spa29 = t29

LET g_spds[m_cnt].tc_spa30 = t30

LET g_spds[m_cnt].tc_spd099 = t31

LET m_cnt = m_cnt + 1

IF m_cnt > g_max_rec THEN

CALL cl_err( '', 9035, 0 )

EXIT FOREACH

END IF

END FOREACH

#Edson END查询横向动态填充数据到单身

CALL g_spds.deleteElement(g_cnt)

LET g_rec_b=g_cnt-1

DISPLAY g_rec_b TO FORMONLY.cn2

LET g_cnt = 0

END FUNCTION

FUNCTION t900_bp(p_ud)

DEFINE p_ud LIKE type_file.chr1

IF p_ud <> "G" OR g_action_choice = "detail" THEN RETURN END IF

LET g_action_choice = " "

CALL cl_set_act_visible("accept,cancel", FALSE)

{#Edson显示

CALL cl_set_comp_visible("tc_spa01,tc_spa02,tc_spa03,tc_spa04,tc_spa05,tc_spa06,tc_spa07,tc_spa08,tc_spa09,tc_spa10",TRUE)

CALL cl_set_comp_visible("tc_spa11,tc_spa12,tc_spa13,tc_spa14,tc_spa15,tc_spa16,tc_spa17,tc_spa18,tc_spa19,tc_spa20",TRUE)

CALL cl_set_comp_visible("tc_spa21,tc_spa22,tc_spa23,tc_spa24,tc_spa25,tc_spa26,tc_spa27,tc_spa28,tc_spa29,tc_spa30",TRUE)

CALL cl_set_comp_visible("tc_spb01,tc_spb02,tc_spb03,tc_spb04,tc_spb05,tc_spb06,tc_spb07,tc_spb08,tc_spb09,tc_spb10",TRUE)

CALL cl_set_comp_visible("tc_spb11,tc_spb12,tc_spb13,tc_spb14,tc_spb15,tc_spb16,tc_spb17,tc_spb18,tc_spb19,tc_spb20",TRUE)

CALL cl_set_comp_visible("tc_spb21,tc_spb22,tc_spb23,tc_spb24,tc_spb25,tc_spb26,tc_spb27,tc_spb28,tc_spb29,tc_spb30",TRUE)

#Edson显示}

DISPLAY ARRAY g_spds TO s_spds.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)

BEFORE DISPLAY

CALL cl_navigator_setting( g_curs_index, g_row_count )

BEFORE ROW

LET l_ac = ARR_CURR()

CALL cl_show_fld_cont() #No:FUN-550037 hmf

ON ACTION modify

LET g_action_choice="modify"

EXIT DISPLAY

ON ACTION delete

LET g_action_choice="delete"

EXIT DISPLAY

ON ACTION query

LET g_action_choice="query"

EXIT DISPLAY

ON ACTION first

CALL t900_fetch('F')

CALL cl_navigator_setting(g_curs_index, g_row_count) ###add in 040517

IF g_rec_b != 0 THEN

CALL fgl_set_arr_curr(1) ######add in 040505

END IF

ACCEPT DISPLAY #No:FUN-530067 HCN TEST

ON ACTION previous

CALL t900_fetch('P')

CALL cl_navigator_setting(g_curs_index, g_row_count) ###add in 040517

IF g_rec_b != 0 THEN

CALL fgl_set_arr_curr(1) ######add in 040505

END IF

ACCEPT DISPLAY #No:FUN-530067 HCN TEST

ON ACTION jump

CALL t900_fetch('/')

CALL cl_navigator_setting(g_curs_index, g_row_count) ###add in 040517

IF g_rec_b != 0 THEN

CALL fgl_set_arr_curr(1) ######add in 040505

END IF

ACCEPT DISPLAY #No:FUN-530067 HCN TEST

ON ACTION next

CALL t900_fetch('N')

CALL cl_navigator_setting(g_curs_index, g_row_count) ###add in 040517

IF g_rec_b != 0 THEN

CALL fgl_set_arr_curr(1) ######add in 040505

END IF

ACCEPT DISPLAY #No:FUN-530067 HCN TEST

ON ACTION last

CALL t900_fetch('L')

CALL cl_navigator_setting(g_curs_index, g_row_count) ###add in 040517

IF g_rec_b != 0 THEN

CALL fgl_set_arr_curr(1) ######add in 040505

END IF

ACCEPT DISPLAY

{ON ACTION detail

LET g_action_choice="detail"

LET l_ac = 1

EXIT DISPLAY}

ON ACTION output

LET g_action_choice="output"

EXIT DISPLAY

ON ACTION help

LET g_action_choice="help"

EXIT DISPLAY

ON ACTION locale

CALL cl_dynamic_locale()

CALL cl_show_fld_cont() #No:FUN-550037 hmf

ON ACTION exit

LET g_action_choice="exit"

EXIT DISPLAY

ON ACTION confirm

LET g_action_choice="confirm"

EXIT DISPLAY

ON ACTION undo_confirm

LET g_action_choice="undo_confirm"

EXIT DISPLAY

ON ACTION upload

LET g_action_choice="upload"

EXIT DISPLAY

{ON ACTION upload_sub

LET g_action_choice="upload_sub"

EXIT DISPLAY}

#add Edson----------------------

ON ACTION details #明细

LET g_action_choice="details"

EXIT DISPLAY

#add ----------end--------------

ON ACTION controlg

LET g_action_choice="controlg"

EXIT DISPLAY

{ ON ACTION accept

LET g_action_choice="detail"

LET l_ac = ARR_CURR()

EXIT DISPLAY

}

ON ACTION cancel

LET INT_FLAG=FALSE #MOD-570244mars

LET g_action_choice="exit"

EXIT DISPLAY

ON IDLE g_idle_seconds

CALL cl_on_idle()

CONTINUE DISPLAY

ON ACTION about #MOD-4C0121

CALL cl_about() #MOD-4C0121

ON ACTION exporttoexcel #FUN-4B0025

LET g_action_choice = 'exporttoexcel'

EXIT DISPLAY

AFTER DISPLAY

CONTINUE DISPLAY

ON ACTION controls #No.FUN-6B0032

CALL cl_set_head_visible("","AUTO") #No.FUN-6B0032

END DISPLAY

CALL cl_set_act_visible("accept,cancel", TRUE)

END FUNCTION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值