0

我正在尝试编写一个带有 2 个条件的 if 语句......其中一个是它是否已经超过 60 分钟,另一个条件是它是“迟到的”。例如,我试图确定何时发货延迟超过一个小时,但我不希望它计算发货提前的时间,而只是延迟发货的时间。这是我最初的等式,但在发货提前 60 分钟以上时也计算在内:

IF HDIFF ( SHIPMENT_INDIVIDUAL_MOVE_COSTING.LOAD_DATE_FIELDS.SL_LD_DROP_ACTUAL_DATE , SHIPMENT_INDIVIDUAL_MOVE_COSTING.LOAD_DATE_FIELDS.SL_LD_DROP_APPT_START_DATE , 'Minute' , 'D6' ) GT 60 THEN 1 ELSE 0 

任何帮助或想法表示赞赏....我觉得卡住了

4

1 回答 1

0

我已经尝试了一些代码来解决您的问题,并且我认为它按预期工作。

我使用的代码:

-* IGNORE THESE LINES, ONLY FOR DATA SAMPLING
FILEDEF ORDERS DISK orders.ftm (APPEND
-RUN
-*
EX -LINES 6 EDAPUT MASTER,ORDERS,CV,FILE
FILENAME =ORDERS, SUFFIX=FIX
  SEGNAME=ORDERS, SEGTYPE=S0, $
    FIELD=ORDER_COD_PROD, ALIAS=ORDER_COD_PROD, USAGE=A21   ,ACTUAL=A1 ,$
    FIELD=ORDER_DELIVERY, ALIAS=ORDER_DELIVERY, USAGE=HYYMDS,ACTUAL=A30 ,$
    FIELD=ORDER_TRACKING, ALIAS=ORDER_TRACKING, USAGE=HYYMDS,ACTUAL=A30 ,$
-*
-WRITE ORDERS 12020/11/20 11:20              2020/11/20 12:45
-WRITE ORDERS 22020/11/20 11:40              2020/11/20 12:45
-WRITE ORDERS 32020/11/20 11:50              2020/11/20 12:45
-WRITE ORDERS 42020/11/20 11:55              2020/11/20 12:45
-WRITE ORDERS 52020/11/20 12:00              2020/11/20 12:45
-*
DEFINE FILE ORDERS
 HOW_LATE/D12.2 = HDIFF(ORDER_TRACKING, ORDER_DELIVERY, 'MINUTE', 'D12.2');
 DEC_LATE/A10   = IF HOW_LATE GE 60 THEN 'Late' ELSE 'Early';
END
-RUN
-*
TABLE FILE ORDERS
 PRINT 
  ORDER_COD_PROD AS 'ID'
  ORDER_DELIVERY AS 'Day/Time Compromised'
  ORDER_TRACKING AS 'Day/Time Now'
  HOW_LATE       AS 'Late (Minutes)'
  DEC_LATE       AS 'Late (Literal)' 
END
-RUN

结果是:

PÁG 1
ID  Day/Time Compromised    Day/Time Now         Late (Minutes) Late (Literal)
1   2020/11/20 11:20:00     2020/11/20 12:45:00  85,00          Late
2   2020/11/20 11:40:00     2020/11/20 12:45:00  65,00          Late
3   2020/11/20 11:50:00     2020/11/20 12:45:00  55,00          Early
4   2020/11/20 11:55:00     2020/11/20 12:45:00  50,00          Early
5   2020/11/20 12:00:00     2020/11/20 12:45:00  45,00          Early

这是虚构的数据,但您可以看到我创建了一个包含多个字段的文件,一个包含产品代码,另一个包含产品必须以时间戳格式交付的时间,最后,另一个包含代表“时刻”的字段”的报告。有了这两个时间戳,我们可以使用函数 HDIFF 来计算两个时刻的分钟差,如 Double。通过这种转换,我们可以检查它是否小于 60 分钟 (LT) 或大于或等于 60 (GE)。

问候。

于 2020-11-20T13:50:07.827 回答