質問箱 No.79: 当番カレンダーを作成したい

      ◇ 回答箱 No.79-1  回答者:  内海 孝  1998年07月 No.198 P.17
          ◇ 回答箱 No.79-2  回答者:  高橋 周助  1998年07月 No.198 P.20
              ◇ 質問箱 目次へ
No.79   当番カレンダーを作成したい  質問者
   西村 重幸
1998年06月
197号 P.20
1998年当番カレンダー

  下記の<TOUBAN>は1984年に当時のピップスマガジンの記事を参考に作成したカレンダー作成オートですが、難解で班数が変更する度に苦労しています。

1999年当番カレンダー







   今年4月1日から新勤務体制に移行した機会に、1999年からのカレンダー作成オートをリニューアルしたいと思いますが、何かスッキリしたオートはないでしょうか。
    (設定)1年間を15班交代で当番勤務します。(休日なし)

  【プログラム】
 1 <TOUBAN>
 2        DISP OPEN,COLOR(Y),[25,5],"西暦    年のカレンダー作成";
 3 $西暦: INPUT [30,5],Z1,U(F:NNNN/P/);IF ERR(0)=55 THEN GOTO $ST;	
 4                                     IF Z1<1999 THEN GOTO $西暦;
 5 $表:      G;DATA/1;
 6 $タイトル:    LET V1=NUM$(Z1)+"年  当番カレンダー";CT;%V1;CLOSE;
 7 $閏年:    IF NOT(Z1 MOD 4)=0 THEN LET [34,9]=" ";
 8 
 9 $初期:    LET X1=INTG(Z1);LET X2=X1-1;
10           LET X3=X1+X2/4-X2/100+X2/400;
11           LET X5=X3-X3/7*7;
12 $1月1日:
13           LET X6=X3-X3/15*15;                          /*15班用*/
14           LET X7=INTG(ABS(2000-Z1));                   /*該当年*/
15           IF Z1=1999 THEN LET X8=X6-2 ELSE LET X8=X6+2+(4*X7);
16           IF X8>15 THEN LET X8=X8-15;
17           IF X8<1 THEN LET X8=X8+15; 
18
19 $書込:   FOR X10=2 TO 79 STEP 7;                        /*月列*/
20          FOR X11=6 TO T;                                /*日列*/
21              LET V1=[X11,X10];IF KLEN(V1)=0 THEN BREAK; /*月末*/
22              LET [X11,X10+2]=V10;                       /*曜日*/
23              LET X5=X5+1; IF X5=7 THEN LET X5=0;
24              [X11,X10+4]=NUM$(X8);                      /*当番*/
25              LET X8=X8+1; IF X8=16 THEN LET X8=1;
26          NEXT;NEXT;
27 $ST:     CLOSE;STOP;
28		
29 <曜日>
30        IF X5=0 THEN LET V10="日";IF X5=1 THEN LET V10="月";
31        IF X5=2 THEN LET V10="火";IF X5=3 THEN LET V10="水";
32        IF X5=4 THEN LET V10="木";IF X5=5 THEN LET V10="金";
33        IF X5=6 THEN LET V10="土"; RETURN;

このページのTOPへ戻る