<夜警班番号> STEP OFF; CLOSE; /*前歴の影響を消しておく*/ /****** A.条件設定 **************************************************/ /*====== A-1. カレンダーを作りたい年============================*/ LET Z15=2004; /*西暦で指定すること*/ LET Z16=Z15*10000+101; /*元日の日付*/ /*====== A-2.スタートの条件 ====================================*/ LET Z11=2004; /*夜警スタート年*/ LET Z12=5; /*夜警スタート月*/ LET Z13=30; /*夜警スタート日*/ /*====== A-3.条件の正当性検査 ==================================*/ $検査1: LET Z14=DATE(Z11*10000+Z12*100+Z13,1,0); /*スタート日の日付*/ IF ERR(0)=0 THEN GOTO $検査2; DISP OPEN,[10,10],"スタート日は存在しません。"; INPUT [10,12],"了解したらリターンキーを押して下さい。",V1; GOTO $終; /*出口へ*/ $検査2: IF Z15>=Z11 THEN GOTO $B; DISP OPEN,[10,10],"スタート日以降の年を指定して下さい。"; INPUT [10,12],"了解したらリターンキーを押して下さい。",V1; GOTO $終; /*出口へ*/ /******* B.班番号決定 ***********************************************/ /*====== B-1.年間データ書き込み用空表を作成 ====================*/ $B: SET;S;M;1;36;;Y; /*横桁数36桁に設定*/ O;夜警班番号;6;No.;16;年月日;2;曜;8;班番号;;ESC; ATR;N;D;@年月日 ; /*年月日列に日付属性を設定*/ IR;S;H;394; /*空行を394行作成*/ /*====== B-2.各列を完成 ========================================*/ NUM;M;C;@年月日 ;H;%Z16;1; /*年月日列に日付連番を記入*/ CAL;@年月日 MOD 7=@曜 ; /*曜列に曜日連番を記入*/ LET Z1=DATE(Z14,Z16); /*スタート日から元日までの経過日数*/ NUM;M;C;@No. ;H;%Z1;1; /*No.列に番号を記入*/ CS;M;@No. >=0;;A;; /*スタート日以前の行を削除*/ CAL;DF0;@No. /7=@班番号 ; /*班番号算出の前半計算式*/ CAL;(@班番号 +@No. ) MOD 7+1=@班番号 ; /*算出の後半計算式*/ /*====== B-3.「WK1」バインダーに保存 ===========================*/ CS;M;C1=C1;;A;WK1/D; /*WK1バインダーの有無に関係なく保存可能*/ /******* C.月別処理 *************************************************/ /*===== C-1.最終結果保存用バインダー12頁分を確保 ===============*/ IF NAME(3,"WK3")=0 THEN GOTO $頁確保; BIND;D;WK3;Y; $頁確保:CLM;ダミー;Y; MB;WK3;; MP;WK3;11;; /*===== C-2.月毎の処理12ヵ月分を繰り返す =======================*/ FOR X1=1 TO 12; IF Z15=Z11 AND DCML(X1)"" THEN LET [X2,X3]=[X2,X3]+"班"; NEXT; NEXT; /*--- C-3-e."日月火水木金土"を書き込み、整形_その2 ---------*/ WR;H-2;2;日;;月;;火;;水;;木;;金;;土;ESC; /*曜記入*/ DC;1;Y; /*不要になった第1列を削除*/ SIZE;M;150;; /*ページ幅150桁確保*/ DRL;R;6/8/10/12/14; /*横罫線を引く*/ DRL;C;1/3/5/7/9/11/13; /*縦罫線を引く*/ DRL;C;N; /*縦罫線を引く*/ /*--- C-3-f.結果を当該ページに保存 --------------------------*/ P;WK3/%X1;ESC; NEXT; /******* Z.終 *******************************************************/ $終: STEP OFF; CLOSE; STOP; /*前歴の影響を消して、終了*/