質問の要旨は、労働時間の合計をすると桁あふれに成るとのこと。そんな事ってあるの?あれ、桁あふれします。実務で充分あることなのに、私が遭遇しなかったことの方が恥ずかしく感じました。日付の差は日数であって日数を年月日で呼ぶことはありません。一方、時刻の差は秒数であると共に、この差を時分秒で呼ぶ所に基本的な錯誤(PIPS設計で時間を時刻と一緒)があったのではないかと思います。
合計値が24時間を含めてそれ以上だと*****の桁あふれになります。それなら24時間以上なら24時間で区切って、あふれた分のみを時分秒で表して、時の単位の所に区切り分を合わせれば、良さそうです。
1 <PGM>
2 ATR;R;8; /* 労働時間の列 ATR 解除 */
3 CAL/C;C6-C4=C8;C[8];RH+R(T-1)=/RT;ESC;
4 LET Z1=H(T,8); /* 合計の秒数を取り込む */
5 LET Z2=Z1/86400; /* 24時間=86400で区切る */
6 LET Z3=INT(Z2); /* 区切りを整数にVする */
7 LET Z4=Z1-(Z3*86400); /* あふれ秒数を求める */
8 LET V4=TIMENUM$(Z4); /* 秒数を時分秒に */
9 LET V5=LEFT$(V4,2); /* 時の2桁を求める */
10 LET V6=RIGHT$(V4,3); /* 分と秒のみを全部 */
11 LET Z5=VAL(V5); /* 時を数値に */
12 LET Z7=(Z3*24)+Z5 /* 時の合計 */
13 LET V7=NUM$(Z7); /* 文字にする */
14 LET V8=V7+V6; /* 時分秒の完成 */
15 ATR;N;T;8; /* 労働時間を計算するためATR */
16 CAL;C6-C4=C8; /* 労働時間を計算 */
17 ATR;R;8; /* 完成時分秒を差し込むためATR解除 */
18 LET [T,8]=V8; /* 書き込み */
19 ATR;N;T;8; /*ATRで戻しても合計値は見かけ変わりません */
20 STOP;
□
|