<夜警班番号_3> STEP OFF; CLOSE; /*前歴の影響を消しておく*/ /****** A.条件設定 **************************************************/ /*====== A-1. カレンダーを作りたい年============================*/ SELECT [10,10],"対象年",X5,"2004","2005","2006","2007","2008"; LET Z15=DCML(X5)+2003; /*対象年(西暦)*/ LET Z16=Z15*10000+101; /*元日の日付*/ /*====== A-2.スタートの条件 ====================================*/ LET Z11=2004; /*夜警スタート年*/ LET Z12=5; /*夜警スタート月*/ LET Z13=30; /*夜警スタート日*/ /*====== A-3.条件の正当性検査 ==================================*/ $検査: LET Z14=DATE(Z11*10000+Z12*100+Z13,1,0); /*スタート日の日付*/ IF ERR(0)=0 THEN GOTO $B; DISP OPEN,[10,10],"スタート日は存在しません。"; INPUT [10,12],"了解したらリターンキーを押して下さい。",V1; GOTO $終; /*出口へ*/ /****** B.七曜表の空表を作成 ****************************************/ $B: SET;S;M;1;256;;Y; /*横桁数256桁に設定*/ O;夜警七曜表(空);4*14;;日;;月;;火;;水;;木;;金;;土;ESC; CF;2/4/6/8/10/12/14;8; CS;M;C1=C1;;A;WK1/D; /*バインダー「WK1」を作成*/ IR;S;H;18; /*空行を18行挿入*/ DRL/C;R;7/10/13/16/19; /*横罫線を引く*/ C;1/3/5/7/9/11/13; C;N; ESC; /*縦罫線を引く*/ ATR;P;L;A; /*全列に左詰属性を設定*/ P;WK1/1;ESC; /*「WK1」の1頁に保存*/ /******* C.班番号順序表作成 *****************************************/ SET;S;M;1;36;;Y; /*横桁数36桁に設定*/ O;班番号順序;4;順序;6;班番号;ESC; IR;S;H;7; /*7行の空行を挿入*/ NUM;M;C;@班番号 ;H;1;1;ESC; /*1班から始まる班順列を記入*/ CPA;M;Y; /*サブバッファにもコピー*/ FOR X5=2 TO 7; /*2〜7班から始まる班順列を記入*/ ROLL;@班番号 ;A;+1; /*上方向に1行ロール*/ S; CPR;SA;T+1; S; /*サブバッファにコピー*/ NEXT; S; NUM;M;C;@順序 ;H;0;1; /*順序列列に順序を記入*/ CS;M;C1=C1;;A;WK2/D; /*WK2バインダーの有無に関係なく保存可能*/ /******* D.班番号決定 ***********************************************/ /*====== D-1.年間データ書き込み用空表を作成 ====================*/ SET;S;M;1;38;;Y; /*横桁数38桁に設定*/ O;夜警班番号;6;No.;15;年月日;2;曜;6;班番号;5;年;3;月;;ESC; ATR;N;D;@年月日 ; /*年月日列に日付属性を設定*/ IR;S;H;370; /*370行の空行を挿入*/ /*====== D-2.各列を完成 ========================================*/ NUM;M;C;@年月日 ;H;%Z16;1; /*年月日列に日付連番を記入*/ CAL;@年月日 MOD 7=@曜 ; /*曜列に曜日連番を記入*/ LET Z1=DATE(Z14,Z16); /*スタート日から元日までの経過日数*/ NUM;M;C;@No. ;H;%Z1;1; /*No.列に番号を記入*/ CAL/C;DF0;@No. MOD 49=@No. ; /*No.列に順序番号を算出*/ ROUND(DATE(@年月日 )/10000,-1,0)=@年 ; /*年列に年を記入*/ ROUND((DATE(@年月日 ) MOD 10000)/100,-1,0)=@月 ;ESC; /*月列に月を記入*/ CAM;M;WK2;@No. ;;@順序 ; @No. ;@年月日 ;@曜 ;S@班番号 ;@年 ;@月 ;;WK3/D; /*「WK2」から班番号を読み取って「WK3」に保存*/ /******* E.月別処理 *************************************************/ /*===== E-1.最終結果保存用バインダー12頁分を確保 ===============*/ IF NAME(3,"WK4")=0 THEN GOTO $頁確保; BIND;D;WK4;Y; $頁確保:CLM;ダミー;Y; MB;WK4;; MP;WK4;11;; /*===== E-2.月毎の処理12ヵ月分を繰り返す =======================*/ FOR X1=1 TO 12; IF Z15=Z11 AND DCML(X1)