【DO!BOOK・ページリンク】
2008_migaro_techreport_001   133 / 136

BOOKをみる

10秒後にBOOKのページに移動します


131 Excelを使った転送文の書き方 @ Excel を開く A エミュレーター画面を開き、"DSPFMT" コマンドでファイルレイアウトを表示 する B 表示したファイルレイアウトの項目を 全て選択しコピーする C Excel に切り替え、"A1" セルから貼り 付ける D エミュレーター画面に切り替え、テキス ト記述/ 欄見出しも全て選択しコピーす る E Excel に切り替え、"B1" セルから貼り 付ける F ファイルレイアウトが次画面以降もある 場合は、B.Eを繰り返す(Excel では、 A 列B 列ともに前回の続きから貼り付 ける) G "C1" セルに"=TRIM(A1)" と書き、D 列も含めA 列の最終項目の行まで一度 にコピーする H "E1" セルに次の式を記述する   = " e d t " & C 1 & " . T e x t : = T a b l e 1 . FieldByName('"&C1&"').AsString; //"&D1 I "E1" セルの内容を最終項目の行まで、 一度にコピーする  実際に見ていただくと理解していただき やすいのですが、このときE 列には転送 文が全項目分書かれており、しかも各項目 の見出しがコメントとして付いています。 あとはE 列の内容をDelphi に貼り付けれ ば、転送文ができあがることになります。 そして、この考え方でF 列に次のように 書けば、画面からファイルへの転送文も書 くことができます。 ="Table1.FieldByName('"&C1&"'). AsString := edt"&C1&".Text; //"&D1  このExcel ファイルを雛形として持っ ていれば、エミュレーター画面から項目名 とテキスト記述/ 欄見出しをコピーするだ けで、いつでもあっという間に転送文を書 くことができます。この方法は、最初に書 いた方法と比べ、確実にかつ劇的にスピー ドが速くなるのです。数十行の転送文であ れば「ファイル→画面」「画面→ファイル」 の両方が、1 分とかからず書くことができ ます。  いかがでしょうか?ここまで読んでいた だいた開発者の方で、この感動に共感して いただける方はどれだけおられるでしょう か。私は、この方法に気付き結果を見たと き、心の中でガッツポーズをしていました。 私の中では「キーボード入力の回数を少な くかつ早く正確に転送文を書く」というこ とにおいては、さまざまな手間を考えても、 この方法が完成形ではないかと考えていま した。  このあと、転送文はほぼこの方法を使っ て書いていました。しかし、しばらくする と、私はプログラムを書く機会が減ってい きました。後輩も増え、私の業務はSE 職 が中心になり、プログラムをあまり書かな くなっていったのです。  そんなある日、一人の後輩社員が Delphi の画面で転送文を書いているとこ ろを見ました。あまり他人がプログラムを 書いているところを見る機会はないのです が、たまたま転送文を書いているところ だったので、どうやって書くのか興味を感 じ観察したのです。  そのとき彼が書いていた方法は、私が最 初に書いた、1 行目をコピーしていく方法 でした。しかもコピーした後に、各項目を 1 行1 行キーボード入力で書き換えていた のです。「それでは遅すぎる!」と、私はさっ そくExcel を使った方法を彼に伝授しま した。すると、先程まで苦労していた転送 文をあっという間に書くことができ、彼も かなり感動していました。そしてそのとき、 彼が言った一言が次のステップへの引き金 となったのです。  「AS/400 から直接ファイル情報を持っ てきて編集できたら、コピーの手間がなく なりますよね」  確かにその通り! そして、それを可能 にするツールが身近に存在していたので す。「Delphi/400」ならそれができるので す。  その後、社内でツール化することとなり 「Delphi/400 のプログラムを書くためのプ ログラムを、Delphi/400 を使って開発す る」という、少し不思議なプロジェクトが スタートすることとなりました。そして、 とうとう今年の春に、ミガロ開発支援ツー ルの第1 弾として華々しく社内デビューを 飾りました。  この開発支援ツールは、ライブラリー名 とファイル名を入力するだけで、一瞬にし て転送文を画面に表示してくれるという優 れもので、あとは画面の内容をコピーして Delphi へ貼り付ければいいだけです。も F @から繰り返す  また、1 行目に入力する転送文を、次の ようにフィールド名にあたる部分を除いて 書きます。 "edt.Text := Table1.FieldByName(''). AsString;"  そして必要な行数分をコピーしておく と、Cで「Shift +矢印キー」を使用する ことなく、"edt" の後ろと‘" ’" の間にフォー カスを移動して貼り付けるだけなので、さ らにキーボードの入力回数を減らすことが できます。  最初はキーボードの操作もぎこちなく ペースが上がりにくいのですが、一度リズ ムを掴むと、「トン、トン、トン、トン...」 とリズムよく書いていくことができます。 (このときばかりは誰にも声をかけられた くないものです。また、メールソフトを開 いたまま作業をしていると、メール着信の ダイアログが突然開き、せっかく掴んだリ ズムが崩れてしまうので、突然ダイアログ が開くソフトを私は極力閉じるようにして います)。  これはDelphi/400で開発を始めて、キー ボード入力の回数をいかに少なく、早く、 正確に作れるかという方法を、私なりに考 えた最初の形でした。  ただ、この方法では頻繁に画面の切り替 えが発生し、しかも項目の1 つ1 つをコ ピーして貼り付けていかなければならず、 転送項目が多くなれば、どんなにリズムよ く書けたとしても時間がかかってしまいま す。もっと一度にコピーして貼り付けるこ とができる方法はないのかと、試行錯誤す るようになっていました。そんなとき、私 は"Excel" の能力に気付き、転送文を書く のに劇的なスピードを手に入れることにな りました。  その当時、私の中で"Excel" の存在は表 計算ソフトであり、ドキュメントツールで しかありませんでした。当然、プログラム を書くことに結び付けようなどと考えもし ませんでした。そんなときに、以前から知っ てはいましたが「Excel はけっこう文字列 操作が得意」ということに改めて気付いた のです。今となってはきっかけが何だった のかは思い出すことはできませんが、 "TRIM" 関数と"&"(文字結合)という機 能が組み合わさったときに、" ピン" とき たのです。  その方法が次の方法になります。 COLUMN