R P G | 出 力 仕 様 書 |
出力仕様書は印刷ファイルを使用しないで、出力仕様をプログラム記述するときの仕様書です。
本来は、RPGサイクルを使用する場合によく使用されますが、ここでは、RPGサイクルの出力で
はなく、サイクル外の出力を行う場合の出力仕様について紹介します。
サイクル外出力命令
RPGサイクルを使用しない形のコーディングであっても、実際は1回目だけのRPGサイクルの一部で
繰返しをしながら、処理を行っていることになります。
RPGサイクルの立場からみれば、RPGサイクル本来の出力を除く、それ以外の出力は、全て
サイクル外出力ということになります。
サイクル外出力は、いわば、RPGサイクルの立場からすれば、例外(EXCEPTな)の出力と
いうことになります。サイクル外の出力を行うRPGの命令はEXCPTです。
出力仕様書の規則
サイクル外のための出力仕様書は、大きく、レコードレベルの記述とフィールドレベルの記述に
わかれます。
1.レコードレベルの指定タイプのとき
桁位置 入力内容 6桁 仕様書コードOを入力します。 7〜14桁 ファイル名を入力します。 15桁 サイクル外の出力を行うとき、Eをセットします。 17桁 印刷前の改行数 18桁 印刷後の改行数 19〜20桁 印刷前の改ページと位置付けの行番号 21〜22桁 印刷後の改ページと位置付けの行番号 32〜37桁 レコード様式名
2.フィールド指定のとき
桁位置 入力内容 6桁 仕様書コードOを入力します。 32〜37桁 フィールド名 38桁 編集コード 40〜43桁 フィールドの終りの桁位置を指定します。(注) 45〜70桁 固定情報 / 編集語をセットします。
注:印刷文字が、前のフィールドと重なると重ね印刷になり、きれいに表示されないか、あるいは、
まったく表示されないことがあります。
例:出力仕様書コーディングの例
O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 O* 印刷前に改ページし、2行目に位置付けします。 O* ↓ OQPRINT E 1 2 HDR01 O* ↑ O* さらに1回改行します。 O 70 ' 営業担当別売上実績表 ' O UDATE Y 101 O* 印刷前に3回改行します。 O* ↓ O E 3 HDR01 O 101 'PAGE.' O PAGE 111 O* 印刷前に1回改行します。 O* ↓ O E 1 HDR01 O 10 ' 得意先 ' O 20 ' 得意先名 ' O 63 ' 読みカナ ' O 85 ' TEL ' O 99 ' 担当営業 ' O 111 ' 売上実績 '
この例では、出力ファイル名は標準のQPRINT、印刷前に改ページし、2行目に位置づけし、
更に1回改行します。(つまりタイトルの’営業担当別・・・’は3行目に印字される)
ついで、ページは印刷前に3回改行して後行われます。(すなわち6行目)
更に1回改行して見出しが印刷されます。(7行目)
O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 O* 印刷前に2回改行します。 O* ↓ O E 2 DTL01 O* ↓ フィールドはDBのフィールド名と同じ O TKTKNO 6 O TKNMKJ 50 O TKNMKN 72 O TKTEL 87 O TKSLNO 97 O TKURJSK 114
出力仕様書のフィールドに編集元と同じフィールドを使用すると、MOVELやZ−ADDなどの、出力
フィールドへの移送処理は必要なくなります。
ページオーバーフロー標識
プログラム記述のプリンターファイルを使用する場合は、ページオーバーフロー標識を使用できます。
この標識は、OA〜OGまでとOVです。サンプルではOVを使用しています。
F*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 F* ↓標準の印刷ファイルです。 FQPRINT O F 132 OV PRINTER C* ↑ページオーバーフロー用標識
プログラムの中では明細を出力するまえに標識OVの状態をみて、オンであれば、見出しHDR01を
印字しています。見出しを印字すると、標識OVは自動的にオフになります。
C* オーバーフロー標識(*INOV)は自動的にオン(*ON)になります。 C* さらに見出し印刷で、自動的にオフになります。 +---C *INOV IFEQ *ON | C EXCPTHDR01 +---C ENDIF C EXCPTDTL01
QPRINT
予め用意されている標準の印刷ファイルでQGPLの中にあります。
ページ巾132桁、ページ行66、オーバーフロー行60、1インチ当り文字数10です。
DSPFDコマンドで見てみるとその属性がわかります。
DSPPFD によるQPRINTの表示(抜粋)
0/05/02 ファイル記述の表示 DSPFD コマンドの入力 ファイル . . . . . . . . . . . . . . . . . : FILE QPRINT ライブラリー . . . . . . . . . . . . . . : *LIBL 情報のタイプ . . . . . . . . . . . . . . . : TYPE *ALL ファイル属性 . . . . . . . . . . . . . . . : FILEATR *ALL システム . . . . . . . . . . . . . . . . . : SYSTEM *LCL ファイル記述の見出し ファイル . . . . . . . . . . . . . . . . . : FILE QPRINT ライブラリー . . . . . . . . . . . . . . . : QGPL ファイルのタイプ . . . . . . . . . . . . . : 装置 装置タイプ . . . . . . . . . . . . . . . . : 印刷装置 補助記憶域プール ID. . . . . . . . . . . . : 01 装置ファイルの属性 外部記述ファイル . . . . . . . . . . . . . : NO ファイル・レベル識別コード . . . . . . . . : 0980727122318 ページ・サイズ PAGESIZE 長さ . . . . . . . . . . . . . . . . . . : 66 幅 . . . . . . . . . . . . . . . . . . . : 132 測定方法 . . . . . . . . . . . . . . . . : *ROWCOL 行/インチ . . . . . . . . . . . . . . . . : LPI 6 1インチ当りの文字数 . . . . . . . . . . . : CPI 10 フロント・マージン . . . . . . . . . . . . : FRONTMGN *DEVD バックマージン . . . . . . . . . . . . . . : BACKMGN *FRONTMGN オーバーフロー行番号 . . . . . . . . . . . : OVRFLW 60
サンプル・プログラム
以下にサンプル・プログラムをあげます。
**--------------------------------------------------------------- ** ID : LM420A ** NAME : 担当者別得意先一覧 ** FUNC : パラメータであたえられた、営業担当bフ得意先を印刷します。 **--------------------------------------------------------------- H Y- F*--------------------------------------------------------------- FM420L02 IF E K DISK F*↓標準の印刷ファイルです。 FQPRINT O F 132 OV PRINTER C* ↑ページオーバーフロー用標識 C*--------------------------------------------------------------- C *ENTRY PLIST C PARM P@SLNO 4 C*--------------------------------------------------------------- C*初期処理 C*最初に1回見出し印刷をします。 C EXCPTHDR01 C P@SLNO SETLLM420R C P@SLNO READEM420R 99 C*本処理 +----C *IN99 DOWEQ*OFF | C* 出力仕様書のフィールドをDBと共通の名前にすることにより、 | C* 本来必要な出力編集は必要ありません。 | C* | C* オーバーフロー標識は自動的にオンになります。 | C* さらに見出し印刷で、自動的にオフになります。 |+---C *INOV IFEQ *ON || C EXCPTHDR01 |+---C ENDIF | C* ↓ サイクル外出力命令です。 | C EXCPTDTL01 | C* | C P@SLNO READEM420R 99 +----C ENDDO C*終了処理 C SETON LR C RETRN O*--------------------------------------------------------------- O*印刷前に改ページし、さらに1回改行します。 O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 OQPRINT E 1 2 HDR01 O 70 '営業担当別売上実績表' O UDATE Y 101 O*印刷前に3回改行します。 O E 3 HDR01 O 101 'PAGE.' O PAGE 111 O*印刷前に1回改行します。 O E 1 HDR01 O 10 '得意先Y' O 20 '得意先名' O 68 '読みカナ' O 90 'TEL' O 104 '担当営業' O 116 '売上実績' O*印刷前に2回改行します。 O E 2 DTL01 O* ↓フィールドはDBと共通です。 O TKTKNO 6 O TKNMKJ 55 O TKNMKN 77 O TKTEL 92 O TKSLNO 97 O TKURJSK 119
前ページ 次ページ 目次へ
(C)COPYRIGHT ISHIOKA KATSUHIDE 2000