| 2024/06/13(Thu) 19:19:08 編集(投稿者)
ジェダイの桐さん
休日.tbx で "休日" だけのレコードに絞り込んで、その結果を元に配列の要素番号インデックスを作成して、
配列変数:&m休日[ &dimNum ] に "休日" という値を代入する方法を思いつきましたので以下にご案内します。
体感的なスピードには違いがありませんが、この方がスマートでしょ。アハハハha (^^ok
トレース出力の結果を見れば何をしているのかご理解いただけると思いますよ。
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
手続き定義開始 prc休日表示() 変数宣言 自動, 整数 { &i, &step = 1, &multiTblNum } **変数宣言 自動, 長整数 { &recordNum, &recordCount } **変数宣言 自動, 文字列 { &休日 } 変数宣言 自動, 文字列{ &indexList } 変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) } 変数宣言 自動, 整数 { &indexCount, &loop, &dimNum }
多重化 &multiTblNum = #is表
解除 * 絞り込み [日付]{ &mDate[1] <= [] <= &mDate[42] } 絞り込み [休日]{ #trim( [休日], 4 ) <> #u }
&indexList = #u 繰り返し ( .not #eof )
トレース出力 _&mDate[1], " ", _[日付], " ", _( 1 + #日数( &mDate[1], [日付] ) )
&indexList = &indexList + #cond( &indexList <> #u, &comma ) + #str( 1 + #日数( &mDate[1], [日付] ) )
ジャンプ 行番号 = 次行 繰り返し終了 トレース出力 _&indexList
終了 表 &multiTblNum 編集表 &hwindow
** 配列変数の初期化 &m休日 = { "" } /* すべての要素値を未定義にします cf. 桐ヘルプ [代入]コマンド */
if ( &indexList <> #u )
&indexCount = 1 + #文字数( &indexList ) - #文字数( #文字置換( &indexList, &comma, #u ) ) &loop = &indexCount 繰り返し &i = 1, &loop, &step
&dimNum = #num( #対応文字列( &indexList, &i ) ) トレース出力 _&loop, " ", _&i, " ", _&dimNum
** 配列変数へ値を代入 &m休日[ &dimNum ] = "休日"
繰り返し終了 end
手続き定義終了
■2024年06月の時のトレース出力の結果
:&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 5月26日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 1 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月 2日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 8 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月 8日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 14 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月 9日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 15 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月15日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 21 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月16日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 22 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月22日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 28 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月23日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 29 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月29日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 35 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 6月30日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 36 :&mDate[1] : 2024年 5月26日 0時 0分 0秒 [日付] : 2024年 7月 6日 0時 0分 0秒 ( 1 + #日数( &mDate[1], [日付] ) ) : 42 :&indexList : 1,8,14,15,21,22,28,29,35,36,42 :&loop : 11 &i : 1 &dimNum : 1 :&loop : 11 &i : 2 &dimNum : 8 :&loop : 11 &i : 3 &dimNum : 14 :&loop : 11 &i : 4 &dimNum : 15 :&loop : 11 &i : 5 &dimNum : 21 :&loop : 11 &i : 6 &dimNum : 22 :&loop : 11 &i : 7 &dimNum : 28 :&loop : 11 &i : 8 &dimNum : 29 :&loop : 11 &i : 9 &dimNum : 35 :&loop : 11 &i : 10 &dimNum : 36 :&loop : 11 &i : 11 &dimNum : 42
p.s.
昨日のアプローチは根本的な改善策になっていませんね。
さすがに、初めて見せてもらった「フォーム+イベント処理」では内容を理解するのに手間取りました。
これで一件落着だと思います。v(^^)v
|