回答箱 No.37-1: カレンダーを作りたい

  ◆ 質問箱 No.37 質問者: 入川 精二  1996年10月 174号 P.17
      ◆ 質問箱 目次へ
No.37-1   カレンダーを作りたい 回答者
  藤原 良允
1996年11月
178号 P.30
   ◆ No.37(1996年 10月号)の回答-1  (P-4G M68MX)
   ■本誌の1995年5月号に、私が発表した「YONUM」というオートプログラムを使用すれば簡単です。「短いけれど非常に便利なプログラム」という題名で掲載されています。図1がその「YONUM」です。このオートを使用して、例えば、'97年1月から4月までのカレンダーを作ってみましょう。次の通りです。
  • <1>先ず、1列目に1日から31日までを書き込んだ列と、2列目に曜日を書き込む列を作り、これを「FMT」というバインダーの1頁に登録します。つまりこれがカレンダー作表のフォーマットになります。
       O;カレンダー;5;月日;5;曜日;HOME;IR;S;4;31;NUM;;R;1;4;1;1;P;FMT/1;;

  • <2>次に下記のように操作してカレンダーというバインダーの1頁から順次登録すれ ばOKです。
       G;FMT/1;CT;'97年1月;YONUM;P;カレンダー/1;;
       G;FMT/1;CT;'97年2月;DR;32,T;;YONUM;P;カレンダー/2;;
       G;FMT/1;CT;'97年3月;YONUM;P;カレンダー/3;;
       G;FMT/1;CT;'97年4月;DR;T;;YONUM;P;カレンダー/4;;

      ■この[YONUM」は非常に便利なプログラムですから、是非ご活用下さい。■

図1 YONUMプログラム(1995/5藤原良允)

<YONUM>  /* 曜NUMプログラム・・・上書き問い合わせあり */
      V1="日";V2="月";V3="火";V4="水";V5="木";V6="金";V7="土";CAL;HOME;
$スタート:  ACCEPT "縦方向(R), 横方向(C)? [RETURN]のみは 縦方向 です",V11;
            IF V11="R" THEN GOTO タテ1; IFV11="" THEN GOTO タテ1;
            IF V11="C" THEN GOTO ヨコ1 ELSE GOTO スタート;
$タテ1:   ACCEPT "列番号は?",V12;
          ACCEPT "何行目から書き込みますか?",V13;
          LET X12=VAL(V12);LET X13=VAL(V13);GOTO 曜;
$ヨコ1:   ACCEPT "行番号は?",V13;
          ACCEPT "何列目から書き込みますか?",V12;
          LET X12=VAL(V12);LET X13=VAL(V13);GOTO 曜;
$曜:      ACCEPT "上書きしてもよいですかY/N?[RETURN]のみはYです?",V15;
          ACCEPT "スタートの曜日は?(日=1,月=2,火=3,水=4,木=5,金=6,土=7)",V14;
          IF V14="" THEN GOTO 曜;IF VAL(V14)<1 OR >7 THEN GOTO 曜;
          LET X14=VAL(V14);IF V11="R" THEN GOTO タテ2;IF V11="C" THEN GOTO ヨコ2;
$タテ2:   IF V15="" OR "Y" THEN GOTO 上書1;
        FOR X30=X13 TO T;
            LETV21=[X30,X12];IF V21<>"" THEN GOTO 次2 ELSE GOTO 次1;
$次1:       LET[X30,X12]=V%X14;LETX14=X14+1;IFX14=8 THEN LET X14=1;
$次2:   NEXT;GOTO 終;
$上書1: FOR X30=X13 TO T;
            LETV22=[T+1,X12];
            LETV12=[X30,X12];IF V21=V22 THEN GOTO ツギ2 ELSE GOTO ツギ1;
$ツギ1:     LET 〔X30,X12]=V%X14;LET X14=X14+1;IF X14=8 THEN LET X14=1;
$ツギ2:  NEXT;GOTO 終;
$ヨコ2:     IF V15="" OR "Y" THEN GOTO 上書2;
        FOR X30=X12 TO C;
           LET V21=[X13,X30;IF V21<>"" THEN GOTO 次4 ELSE GOTO 次3;
$次3:      LET [X13,X30]=V%X14;LETX14=X14+1;IF X14=8 THEN LET X14=1;
$次4:   NEXT;GOTO 終;
$上書2: FORX30=X12 TO C;
           LETV22=[X13,C];
           LETV21=[X13,X30];IFV21=V22 THEN GOTO ツギ4 ELSE GOTO ツギ3;
$ツギ3:  LET[X13,X30]=V%14;LETX14=X14+1;IFX14=8THENLETX14=1;
$ツギ4:  NEXT;
$終:    STOP;
プログラムの部分はプログラム集に収録されています


このページのTOPへ戻る