回答箱 No.141-2: メール本文の中の日付を取り出しバインダー名にしたい
        ◆ 質問箱 No.141 質問者: 元山 よし子  2002年09月 248号 P.14
            ◆ 質問箱 目次へ
No.141-2   メール本文の中の日付を取り出しバインダー名にしたい 回答者
  早瀬 壮一
2002年10月
249号 P.17
 年月日の数字だけを8桁表示にする方法について考察します。該当ページの行データを最初から読みとります。目的の行にだけある目印になる文字・記号を決め、1行目から探します。質問箱の例で見ると目印の文字・記号は「:」のようですから、それを1行目から探します。 その行文字列からスペースを削除して、「:」の位置を求め、その次の桁から「年」「月」「日」以外の数字を年、月、日別に求め、月、日が10未満の場合は頭に「0」を付けて年月日数字を並べます。
<JINJIB>
FOR X6=41 TO E;LET V1=L%X6;
/* V1は行データ。このページを調べるので43からとしています */
  IF V1="=*:*" THEN BREAK;/* 見つけたらループを抜ける。V1が目的行データ */
NEXT;
LET V2=FORM$(V1,3);/* 目的行データの空白を削除した文字列を得る */ MESSAGE V2;
LET X1=KLEN(V2);/* V2の文字数を得る */
FOR X6=1 TO X1;/* V2の文字数だけループを回す */
  IF KMID$(V2,X6,1)=":" THEN BREAK;
/* V2の中で":"が見つかったらループを抜ける */
NEXT;
LET X2=X6;
FOR X6=X2+1 TO X1;/* 「:」の次の桁数から最後までループを回す */
  IF KMID$(V2,X6,1)="年" THEN BREAK;
/* 「:」以下の文字列で「年」が何桁目にあるかを求める */
NEXT;
LET X3=X6;
     /* 同様の手法で「月」まで、「日」までの桁数を調べる。 */
FOR X6=X3+1 TO X1;
  IF KMID$(V2,X6,1)="月" THEN BREAK;
NEXT;
LET X4=X6;
FOR X6=X4+1 TO X1;
  IF KMID$(V2,X6,1)="日" THEN BREAK;
NEXT;
LET X5=X6;
LET V7=KMID$(V2,(X2+1),(X3-1-X2));
LET V8=KMID$(V2,(X3+1),(X4-1-X3));IF VAL(V8)<10 THEN LET V8="0"+V8;
LET V9=KMID$(V2,(X4+1),(X5-1-X4));IF VAL(V9)<10 THEN LET V8="0"+V9;
LET V10=V7+V8+V9;
MESSAGE V10;
STOP;

【テストデータ】
                配信日  :2002 年  7  月   25 日

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


このページのTOPへ戻る