a.7. 2000年問題 其の添 |
いよいよ、フィールドの検索を開始した。 手順(試行錯誤)まず、すべてのファイルのフィールドを、DSPFFDで、OUTFILEに作成した。じつは、簡単なツールを作ってあって、OUTFILEから、さらに別ファイルにデータができます。これは、フィールドが、数字でも、文字でも、ひとつのフィールドにセットするようにしたのです。というのも、文字フィールドの桁数の場合、バイト数で長さが分かるのですが、パック数字の場合、実バイト数が、このバイト数に入ってしまい、数字としての桁数は、別個のフィールドに入っているのです。そこで、RPGで、どちらも、フィールド長なるフィールドに落としたのです。 そして、QRYで、このファイルを検索しました。最初は、LIKE ’%年%'をしたりしてました。(漢字検索の時は、%も漢字の%にすること。)でもそのうち、この「LIKE関数にセットすべき値」をざっと検索しよう、と考え出しました。そこで、桁数を2,4,6,7,8,9までの数字と文字を検索して、表示された、データを目で確認していきました。えらく疲れましたが、その結果、次のようなものが、「LIKE関数」に与えるべき物と分かってきました。厳密ではなく、やや、幅のある選択になります。
ここで、%xxx%は、このxxxを含む文字列を意味して、-XはXで終わる文字列です。 「しまった」と思ったこと
でも、今のところこれくらいです。ワークフィールドは、必ず、カラムヘディングかテキストに、使用目的を入力しているので、全ファイルをどこかのライブラリーにリコンパイルすれば、分かります。 日付に関するコマンドは?次に、コマンドで、日付に関するものを調べた。 最初、DSPMSGDでQCPFMSGをスプール(*FULLではなく、*BASICで)にして、「日付」で検索して、MSGIDをメモに書き出し、CDマニュアルの「モニター可能メッセージ」で検索した。(遠回りだったが、結構勉強になった。「できないこと」はあまりマニュアルに出てないが、エラーメッセージを見ると分かるのです。2000年問題とは関係ないけど。) その後、CLコマンドのマニュアル(上下)を、DATEで検索してみた。 その結果、次のものが候補にあがった。これらは、むしろ、6桁のままでなくてはいけないかもしれない。OSのバージョンによるのでしょう。
FNDSTRPDMのバッチ処理オプションご存知の方は、ご存知でしょうが(あたり前か)、FNDSTRPDMをバッチで投入する時のオプションで、検索結果のソースメンバーをファイルに落とすことができます。(もちろんスプールにして、それを物理ファイルにして、内部記述のRPGで読み込んで、ファイルを作る手もあります。でも、面倒ですよね。) 最初は、分からなかったのですが、たとえばOPTIONに*CPYとすると、対話型モードのみ有効で、バッチ投入すると、エラーになります。この件は、マニュアルには、ちょっとだけ出てました。
要は、自分でオプション定義をして、それを指定しろ、ということです。 そこで、STRPDMのオプション9で,ユーザー定義オプションをセットしてみました。CPYSRCFで &L/&Fのメンバー&Nを固定的に或ソースファイルに複写するオプションを、B1としてました。そして、FNDSTRPDMのOPTIONにB1をいれて、プロンプトは*NOPROMPTにして、FNDSTRPDMをバッチ投入したら、ちゃんと検索した内容をソースコピーしてくれていた。 私が、ほしいのは、ソースリストではなく、該当したソースメンバー名なので、このやり方では、ディスクがもったいない。そこで、
これで、検索した結果を、ファイルに簡単に落とせます。これを元に、さらに、検索を続けることも可能です。(これ専用のCLPを作るのでしょうが。)上記該当フィールドを、これで検索してみようと思っています。本当は、RPGのSCAN命令で、やろうかと思ったのですが、この方が楽です。でも、検索内容のレコード印刷は、スプールにするしか手はないようです。残念。 QRYで、最初に書いたLIKE関数で出てくるフィールド名をファイルに落とし、それを、順次読み込んで、このFNDSTRPDMで、該当するRPGをだそう、というわけです。はたして、うまくいくでしょうか?むむむ ところで、IBMの2000年対応のウェッブで、見たのですが、Application Development Services/400のApplication Dictionary Serviceって使った人いますか?便利なのかな? それから、依然メールでいただいたのですが、日付の表現形式についても、上記のIBMのWWWで確認しておきましょう。結構、いい資料です。YYYY/MM/DDという形式は、ISOもJISにもなく、YYYY-MM-DDが、ISOとJISとのことです。あの資料作ってくれた方々、ありがとうございました。この件、社内回覧しとくべきかな。でも、RPGの編集コードYは相変わらず、9999/99/99の形式ですね。 続く... |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||