2016-09-01 7 views
0

日付を週番号に変換していますが、エラーが発生します。手伝って頂けますか?進捗状況4GL - 週の年番号

これは、あなたの関数への入力としてテーブルのフィールドを使用しているように見えます私のコード

function WeekNumber returns integer (OrderRel.ReqDate as date): 

define var vDay as integer no-undo. 

vDay = OrderRel.ReqDate - date(1, 1, YEAR(OrderRel.ReqDate)) + 1. 

return integer(truncate(vDay/7, 0)) + (if vDay mod 7 <> 0 then 1 else 0). 

end function. 
+1

はエラーメッセージを投稿してください。また、私はあなたが ""を使用していないことに気付きます。あなたの行末の文字として。あなたは "。"を使うべきです。すべてのステートメントの終わりに。 – Austin

答えて

2

のですか?代わりにそれをローカル変数に変更し、レコードを使用して呼び出す必要があります。

FUNCTION WeekNumber RETURNS INTEGER (INPUT pdaDate as DATE): 

    DEFINE VAR vDay AS INTEGER NO-UNDO. 

    vDay = pdaDate - DATE(1, 1, YEAR(pdaDate)) + 1 . 

    RETURN INTEGER(TRUNCATE(vDay/7, 0)) + (IF vDay MOD 7 <> 0 THEN 1 ELSE 0) . 

END FUNCTION. 

MESSAGE WeekNumber(OrderRel.ReqDate) VIEW-AS ALERT-BOX. 

これは、関数をコンパイルして実行します。

もう1つのことは、あなたが計算している週の種類の種類によっては間違っているかもしれないということです。

MESSAGE WeekNumber(DATE("2016-09-02")) VIEW-AS ALERT-BOX. 

enter image description here

これは、ISO8601の規格で週番号を利用だとお使いのシステムでは、しかし少なくともないスウェーデンで、おそらく正しいです。これらの基準により2016年9月2日が週35です...

Week numbering on Wikipedia

ISO week date