回答箱 No.131-1: 指定した年の「成人の日」を求める
       ◆ 質問箱 No.131 質問者:  木村 芳樹  2002年02月 241号 P.22
           ◆ 質問箱 目次へ
No.131-1   指定した年の「成人の日」を求める 回答者
  西村 重幸
2002年03月
242号 P.24
 当社でも同様な処理を、高橋氏の「水道当番表」のオ−トを利用して行っていますので、参考までに報告します。

<ABC>
  /**** 入力画面 *************/
$START:WIN;N;1; DISP CLOSE,OPEN;
DISP [10,9],"(西暦)      年    月の第        曜日";
$西暦: INPUT [17,9],Z10,U(C:NNNN);
$月次: INPUT [25,9],Z11,U(NN);   IF Z11<1 OR >12 THEN GOTO $月次;
$回数: INPUT [35,9],X31,U(C:N);
 
DISP [30,11],"@日  A月  B火  C水  D木  E金  F土";
$曜日:INPUT [40,9],X32,U(C:N);  LET V20=KMID$("日月火水木金土",%X32,1);
DISP [40,9],V20;
  
  /**** 基本表の作成 *************/
$基本表: O;カレンダ;8;年月日;2;曜;2;週;;ESC;
$当該月: LET Z12=Z10*10000+Z11*100+1;
$翌  月: LET Z13=Z10*10000+(Z11+1)*100+1;
         IF Z11=12 THEN LET Z13=(Z10+1)*10000+101;  /*翌年の元旦*/
         LET Z5=DATE(Z12,Z13);         /* 該当月の日数=挿入行数 */
         INFO;S;36; IR;S;H;%Z5;          /*月の行数を確保         */

$属性:   ATR;N;D;@年月日 ;
$日付:   SET;S;M;6; ;;;
         NUM;M;C;@年月日 ;H;%Z12;1;

$曜日:   CAL;@年月日 MOD 7=@曜 ;
         MPU;M;;@曜 =0;"日"=@曜 ; @曜 =1;"月"=@曜 ; @曜 =2;"火"=@曜 ;
                @曜 =3;"水"=@曜 ; @曜 =4;"木"=@曜 ; @曜 =5;"金"=@曜 ;
                @曜 =6;"土"=@曜 ;E;Y;
  /**** 基本表の編集 *************/
$編集:   ATR;R;@年月日 ;               /*解除*/
         NF;S;@年月日 ;4/2/2;
         W;2;;年;月;日;ESC;
  









  ★印は$該当日でのマ−クです

  /**** 該当週の検索 *************/
$C1:    CLEAR X1,14;
         FOR X20=H TO T; LET V1=[X20,@曜 ];     LET V2='"'+V1+'"';
               LET X21=INSTR(1,"日月火水木金土",%V2);
               LET X%X21=X%X21+1;
$該当:         IF V1=V20 AND X%X21=X31 THEN GOTO $該当日;
         NEXT;
$該当無: LET V4=NUM$(Z10)+"年"+NUM$(Z11)+"月の第"+NUM$(X31)+V20;
LET V4=V4+"曜日は存在しません";  GOTO $表示;
$該当日: LET V3=[X20,@日 ];LET [X20,@週 ]="★";COL;R;%X20;A;
        LET V4=NUM$(Z10)+"年"+NUM$(Z11)+"月の第"+NUM$(X31)+V20;
LET V4=V4+"曜日は"+V3+"日です";

$表示: MESSAGE V4; CLOSE;WIN;R;STOP;

回答箱のプログラムがプログラム集に収録されています。


このページのTOPへ戻る