|
左のような表に入力していくとして"END"の列に入力した後、後処理で計算し、"EXIT"で1件の入力を完了させます。小さな親切で付け加えるなら、日付の入力は「あり得ない日付」をチェックするべきです。 下のFORM定義表16行目と18行目のDATENUM(・・・)で日付連番を求めています。あり得ない日付(例えば2月30日)だとこれが0になるのでチェックになります。 日数の計算は、単純な引算ではなく、"DATE関数"を使います。18行目のDATE(N("@START"),N("@END))は日数計算ですが、Z2-Z1でもよいでしょう。 |
日数フォーム定義表(使わない列を削除してあります) 1 ┌──┬────┬──┬──┬────┬─────┬────┬───┬─────┐ 2 │番号│ 項目名 │ 桁 │ 行 │ サイズ │ 色と強調 │文字位置│ 端数 │ 後処理 │ 3 ├──┼────┼──┼──┼────┼─────┼────┼───┼─────┤ 4 │ │ START │32│ 7│ 10│ w│ │ │ <STARTA> │ 5 │ │ END │32│ 9│ 10│ w│ │ │ <ENDA> │ 6 │ │ DAY │32│11│ 10│ w│ │ │ │ 7 └──┴────┴──┴──┴────┴─────┴────┴───┴─────┘ 8 /I 9 BIND=日数TEST;UBFO=<UBFO> 10 11 /M 12 %L25;7.%C7.%H0.%U0.%R0.START%L25;9.END%L25;11.DAY 13 14 /P 15 <UBFO> CLEAR Z1,2;STOP; 16 <STARTA> LET Z1=DATENUM(N("@START"));IF Z1=0 THEN EJECT;STOP; 17 <ENDA> LET Z2=DATENUM(N("@END"));IF Z2=0 THEN EJECT; 18 LET N("@DAY")=DATE(N("@START",N("@END"));EXIT;STOP;
□