2016.02.09
Ted Holt 著

(CSVファイルの印刷に) 十分なインターフェースの数は?

注:この記事に記載のコードはここからダウンロードできます。

CSV (コンマ区切り値) ファイルは、何年にもわたり私の実社会の一部でした。簡単にビルドできるので気に入っています。Microsoft Excel で簡単に開くことができるので、ユーザーのお気に入りです。

IBM i システムで CSV ファイルを読み取る必要がある場合、通常はファイルを IFS から FTP 経由で、自分の PC の一時フォルダーに転送します。皆がやっているように PC 上で Excel で開くことができます。このプロセスの繰り返しはすぐに飽きてしまいます。

CSV ファイルを縦欄形式で印刷できるネイティブ・プログラムがあればいいなと思い付きました。山積みになった値を理解しようとするより、そうしたレポートを読む方がはるかに楽です。また、暇を見て Print CSV File (PRTCSV) コマンドを開発しました。動作するでしょうか?間違いなく動作します。

PRTCSV には以下のようなパラメーターがあります。

パラメーター 説明
STMF CSV データを含むストリーム・ファイルの名前
HEADING レポートの各ページの上部に印刷されるテキスト
DEFF 縦欄定義を含むストリーム・ファイルの名前
COLDEF 印刷された各列の定義 (属性のリスト)
SKIP CSVファイルの先頭にある無視する行の数
STRDLM ストリング値を囲む文字
FLDDLM フィールドを区切る文字

最もシンプルな形では、PRTCSV は STMF パラメーターだけで動作できます。

技術情報40

この場合、レポートはデフォルト形式になります。列はすべて 12 位置幅で、値はすべて左揃えといった具合です。場合によってはこれで十分です。もっと馬力が必要な場合は、COLDEF パラメーターを使います。これにより、各列の以下の属性を指定できます。

パラメーター 説明 デフォルト
Column number 他の属性が適用される列  
Gap before column この列の前に残すスペースの数 1
Width この列に指定できる印刷位置の数 12
Alignment 左揃え、右揃え、中央揃えなど、列の揃え方 左揃え
Editing mask 数字列のフォーマット方法を指定する文字列  
Blank if zero ゼロ値をスペースとして印刷するかどうか指定 いいえ
Print this column この列をレポートに含めるか、省略するかどうか指定 はい
Column headings
1, 2 and 3
各列の上に印刷する見出し  

GLOBALS ソース・メンバーを編集して、これらのデフォルト値をいくつか変更できます。

例を見てみましょう。次のような CSV ファイルです。

技術情報41

このファイルをビルドするため、以下のコマンドを実行しました。

技術情報42

きちんとフォーマットされたレポートをビルドするには、次のようなコマンドが必要です。

技術情報43

確かに見栄えは良くありませんが、タイプする必要はありませんでした。F4 でプロンプトを出し、空白を埋めました。次のようなレポートになりました。

技術情報44

この機能は条件を満たしていますが、私はさらに一歩進めることにしました。ファイルに列定義を保存すると、朝仕事に戻りプロジェクトを再開したときや、定期的に受信するファイルを新たに受信して印刷しなければならない場合に、もう一度空白を埋める必要がないと推測したのです。DEFF (Definitions file) パラメーターを PRTCSV コマンドに追加しました。

定義ファイルは、IFS に保存されたフリーフォーマット・テキストのストリーム・ファイルでもあります。それは、keyword=value というフォーマットのキーワード・パラメーターで構成されています。

上記のようなレポートを生成するには、次のようなストリーム・ファイルが必要です。私はこれに customer-data.txt という名前を付けました。

技術情報45

COLDEF パラメーターではなく、DEFF パラメーターに列の説明がある同じコマンドは次のとおりです。

技術情報46

COLDEF パラメーターと DEFF パラメーターの両方使ってもかまいません。COLDEF 設定は DEFF の設定に優先します。

DEFF パラメーターの詳細については、ダウンロード可能なコードに含まれている PRTCSV DEFF Instructions マニュアルを参照してください。

以下のように PRTCSV をインストールします。

  1. この記事に記載の PRTCSVF.ZIP ファイルを PC にダウンロードします。
  2. ファイルを好みのフォルダーに解凍します。
  3. バイナリー転送を使って、PRTCSVSAVF.SAVF ファイルを IBM i システムに FTP 経由で転送します。
  4. Restore Object (RSTOBJ) コマンドを使って、保存ファイルのオブジェクトを選んだライブラリーにコピーします。

    技術情報47
  5. PRTCSV ソース物理ファイルの GLOBALS メンバーのデフォルト値を変更します。CSV ファイルから読み取る列の最大数を示す、定数 InputDim の値を増やしたい場合があります。欧州の読者の場合、gDecPt 定数の値をピリオドからカンマに変更したいでしょう。 (注: その変更をした状態で PRTCSV をテストしていませんのであしからず)
  6. ソース物理ファイル PRTCSV のソース・コードの INSTALL プログラムをコンパイルします。
  7. INSTALL プログラムを呼び出し、以下の 2 つのパラメーターを渡します。
    ・ユーティリティーをインストールするライブラリーの名前
    ・ILE CRT コマンドにある SRCDBG パラメーターの有効な値
技術情報48

もう少しコメントして、終わりにします。

  1. 数字編集文字列は、数字 0 (ゼロ) と 9、および挿入文字で構成されています。ゼロは抑止できる数字を示します。9 は抑止しない数字を示します。挿入文字は、編集文字列にそのまま挿入する非数値文字です。
  2. ピリオドが 1 つ編集文字列にあった場合、それは小数点と見なされます。ピリオドが複数の場合は挿入文字列と見なされます。
  3. 先行または後続のマイナスは指定できます。
  4. 有効 (非ゼロ) 桁の高位切り捨てが発生した場合、PRTCSV は列にあるすべてのシャープ記号 (#) を印刷します。
  5. 位置合わせ値の最初の文字により桁揃えが決まります。
    ・L, C, R = 左、中央、右
    ・CまたはRのいずれでもない場合はLと見なされます
    ・文字小文字は問いません
  6. はい/いいえ値は、値が単一の桁 1、先頭文字が y、または *y の場合に「はい」と見なされます。大文字小文字は問いません。以下はどれも同じです。
    技術情報49

したがって、ツールボックス向けに別のツールがあります。PRTCSV を便利だと思ったら、是非お知らせください。さらに CSV 関連の記事は近日中に Four Hundred Guru でご覧ください。

ページトップ

ボタン