Skip to content

PF(PRINT BY FORMAT)

オートプログラム対応

デザインページの書式で印刷する

書式

手動 (= ターミナルから直接実行):

pf:

オート / セミオート (= プログラム経由実行):

pf:[デザインページ]:[データページ]:[行範囲]:[用紙]:[向き]:[拡大率]:[余白]:

機能

あらかじめ作成した デザインページ (= 帳票・伝票のレイアウト) に データページ の各行を差し込んで印刷します。請求書・納品書・宛名ラベルなど、決まった書式に明細を流し込む用途に使います。

デザインページは EDP のグラフィカルエディタで作成するか、CDP でテンプレートから新規作成できます。デザインページ内のデータ参照 (#行,列) が、データページのセル値に置き換わって出力されます。

手動実行 (= ターミナルで pf ↩)

順に以下を尋ねられます。

  1. デザインページは ⏎ … 裏画面 — 書式ページを指定 (= 空 ⏎ で裏画面のページを使用)
  2. データページは ⏎ … 表画面 — 差し込むデータを指定 (= 空 ⏎ で表画面のページを使用)
  3. 行範囲は — データを表画面から取った時のみ尋ねられます (= 空 ⏎ で全行)

その後、印刷プレビュー dialog が開きます。内容を確認して「印刷」ボタンで印刷します。

行範囲はマウスでも指定可能: 行範囲を尋ねられている間、データ行をクリックすると行番号が入力されます。Shift + クリックで範囲選択 (= 6-15 の形) になります。

オート / セミオート実行 (= プログラム経由)

dialog を開かず、引数で印刷設定を指定して直接プリンタへ送信します。各印刷設定を省略すると PSET で設定した値が使われます。

セミオート: 表のページに EDIT でオート行を書いて即実行するモード。オートと同じく引数を受け付けます。


引数 (= オート / セミオート専用)

引数は デザインページ → データページ →(行範囲)→ 印刷設定 4 つ の順に消費されます。すべて省略可。

#引数省略時
デザインページページ番号 / ファイル名/ページ / 表題3, format/1, =請求書裏画面のページ
データページページ番号 / ファイル名/ページ / 表題5, uriage/2, =売上表画面のページ
行範囲単一 / 範囲 (= ②が空の時のみ)6, 6-15全行
用紙a4 / a3 / b4 / b5 / letter / legala4PSET の用紙設定
向きt / tate / / y / yoko / yPSET の向き設定
拡大率10〜200 (%)150 または 150%PSET の拡大率設定
余白s (小) / m (中) / n (なし)sPSET の余白設定

行範囲は「データページを空にして表画面を使う時」だけ位置に現れます。 データページを番号で指定した場合は行範囲を尋ねられず、その分だけ後ろの引数が前にずれます。

  • データページ指定あり: pf:[デザイン]:[データ]:[用紙]:[向き]:[拡大率]:[余白]:
  • データページ空 (表画面): pf:[デザイン]::[行範囲]:[用紙]:[向き]:[拡大率]:[余白]:

各引数は半角 / 全角どちらでも受け付けます (= 全角は自動で半角化)。


デザインページの書式 (= 記法)

デザインページのセルに、固定文字とデータ参照を混在させてレイアウトを記述します。EDP エディタで配置した要素も、内部的にはこの記法へ変換されて保存されます。

データ参照

記法意味
#行,列データ行の指定セルを差し込む (= 行は基準行からの相対 1 始まり、列は 1 始まり)
#T,列指定列の 合計 (= 通常モード) / グループ 末尾行 の値 (= キー列モード)
#!行,列キー列 指定。同じ値が続く行を 1 グループにまとめる (後述)

# は全角 、区切りの , は全角 でも書けます。

配置 (= 寄せ) 修飾子

データ参照の直後に付けると、プレースホルダー幅に対して値を寄せて配置します。

修飾子配置
L左寄せ (= 既定)#1,2L
R右寄せ (= 金額向き)#T,3R
C中央寄せ#1,1C
J均等割り付け#1,1J

#行,列R:幅 のように :幅 を付けると、寄せに使う桁幅を明示できます (例: #1,3R:10 = 10 桁幅で右寄せ)。データは切り詰めず、はみ出した分は後続の空白で吸収されます。

制御行

行頭に置くと特別な動作になります。

記法意味
&F改ページ (= フォームフィード)。ここでページを区切る
&Eテンプレート終了。以降の行は無視される
&N行,列面付け。1 ページに 行×列 個のレコードを並べる (後述)
&N行,列,f面付け (= フルサイズモード)

キー列モード

「取引先ごとに伝票を分けたい」場合は、デザインページのデータ参照を #!行,列 (= ! 付き) にします。データページで その列の値が同じ連続行を 1 グループ とし、グループごとにテンプレートを適用します。

セクションは以下のように扱われます (= 見出し / 明細 / 合計の 3 部構成)。

セクション適用回数基準行
head (= 見出し / prefix も含む)グループ毎に 1 回グループ先頭行
body (= 明細)グループ内の各行で繰り返し各行
suffix (= 合計)グループ毎に 1 回グループ末尾行

キー列モードでは #T,列合計ではなくグループ末尾行の値 になります (= 末尾 = Tail)。小計を出したい場合は明細セクションで列を積み上げる設計にします。

例: 取引先ごとの納品書

1 列目が取引先名で同じ取引先が連続して並ぶデータに対し、デザインページの取引先名を #!1,1 と書くと、取引先が変わるたびに改ページ (= 新しい納品書) になります。


面付け(複数面)

宛名ラベルのように 1 ページへ同じ書式を格子状に並べるには、デザインページの先頭に &N行,列 を書きます。

  • &N3,2 → 1 ページに 3 行 × 2 列 = 6 面。データ行が行優先で順に配置されます
  • &N3,2,f → フルサイズモード

面付け時は CSS グリッドで配置されるため、スペースによる桁合わせは不要です。


使用例

手動

pf

→ デザインページ → データページ →(行範囲)を順に尋ねられ、印刷プレビュー dialog が開く。

オートでページ指定して印刷

[print-invoice]:
pf:3:5:a4:t::s:
:stop:

→ デザインページ 3 にデータページ 5 を差し込み、A4 縦 / 余白小 で印刷 (= 拡大率は PSET 設定)。

オートで表画面のデータを行範囲指定して印刷

[print-front]:
pf:3::6-15:a4:t:::
:stop:

→ デザインページ 3 に、表画面の 6〜15 行目を差し込んで A4 縦で印刷 (= データページを空にしたので行範囲が有効)。

オートで裏画面・表画面をそのまま使う

[print-views]:
pf:::::::
:stop:

→ デザイン = 裏画面 / データ = 表画面 / 全行 / 印刷設定すべて PSET 任せ。

セミオート

表のページに EDITpf:3:5:a4:t::s: のようにオート行を書いて即実行できます。


サイレント印刷

PSET の「サイレント印刷」設定はオート / セミオート経由の PF にも適用されます。

  • OFF (default): OS の印刷ダイアログが表示され、確認を経て印刷
  • ON: 既定プリンタへ確認なしで即送信

⚠ 取引先ごとに改ページするデザインで大量のグループがある場合、サイレント ON だと一気に全件印刷されます。実行前に行範囲・グループ数を確認してください。


注意事項

  • データページにプログラムページ / 空ページは使えません (= 「プログラムページはデータページとして使用できません」エラー)。
  • デザインページにテンプレートが無いとエラーになります (= 「デザインページにテンプレートがありません」)。EDP / CDP で書式を作成してください。
  • 行範囲はデータを表画面から取った時のみ有効です。ページ番号でデータページを指定した場合は全行が対象になります。
  • 行範囲はテーブル表示上の行番号 (= prefix / 見出しを含む表示行) で指定します。マウスクリックでの指定もこの表示行番号に従います。
  • 用紙 / 向き / 拡大率 / 余白の引数は P コマンドと共通仕様です (= 拡大率 10〜200%、余白は s / m / n のみ)。詳細は P を参照してください。

関連コマンド

  • EDP — デザインページをグラフィカルに編集する
  • CDP — テンプレートからデザインページを新規作成する
  • P — 画面の内容をそのまま印刷する
  • PSET — 印刷設定を編集する (= 引数省略時のデフォルト値)