the Windowsライターの動作原理を理解する

the WindowsライターがIBM iの印刷スプールをどのようにして
Windowsのプリンタへ印刷出力するのかを理解しておくと必要な設定をより理解することができます。

(1)MS-EMFによる印刷の場合

the WindowsライターはIBM iのSCS印刷ストリームをMicrosoft仕様のスプール型式(MS-EMF)に
変換してMicrosoft仕様の通信プロトコル(SMB)によってWindowsの共有サーバーに転送します。

the Windowsライターの3つの大きなテクノロジー

1.TELNET通信

TELNET(プリンタ・セッション)によってIBM iから印刷スプールを受け取ります。
(TELNET印刷はIBM iマニュアルには公開されていません。RFC準拠 )

2.IBM iスプールをMicrosoft仕様のスプールに変換

IBM iのSCS印刷ストリームをMicrosoft のMS-EMF(=Enhanced Meta File)
(拡張メタ・ファイル)というWindowsのスプール型式に変換します。
( MS-EMFは Microsoft公開仕様に準拠しています。)

3.Microsoft仕様の通信プロトコル(SMB)で共有サーバーと通信

拡張メタ・ファィル(MS-EMF)をMicrosoft仕様の通信プロトコル:
SMB(=Server Message Block)によってWindowsの共有サーバーに転送します。
( SMB通信プロトコルも Microsoft公開仕様に準拠しています。)
(この後、Windowsはプリンタ・ドライバを起動して印刷を行います)

このようにすべてをMicrosoft Windows仕様に変換されて転送されますので
他のWindowsからの共有サーバーへの処理と全く同じ動作原理で行われます。
IBM iをWindowsと同じように見せる、これこそが IBM iのオープン化テクノロジーです。
Windowsが変わってもこれらの処理は影響は受けません。

5250エミュレータ表示には既にあるAutoWebと合わせれば
印刷も含めてすべてIBM iに集中管理することができます。
これによって

 Windows10問題 …Windowsに導入しないのでWindowsバージョンに影響されない。
 Java有償化問題 …JDKを使わないのでJavaの使用料は発生しない。

の効果を得ることができます。

SMBプロトコルと IBM の QNTC

IBM i には QNTC(=Network Client )という機能があり /QNTCという
IFS のフォルダー経由でネットワークのWindowsの共有ファイルを見ることができる機能がありますが
これも SMBプロトコルを使っています。

ただし QNTCは共有ファイルを見ることはできますが共有プリンタにアクセスすることはできません。
共有プリンタにアクセスできてしまうとIBM直結の
5577系プリンタが売れなくなってしまうからと思われます。

共有とは

Windowsには他のクライアントからのアクセスを可能にする「共有」という
機能があり共有ファイルや共有のプリンタなどがありますが
共有にするとファイルやプリンタの属性が変わるわけではなく
共有を可能にするためのサーバー・デーモンとなるプログラムが
起動して待機するということです。
(参考までに PORT番号は 445です。)

the WindowsライターはWindowsのPORT 445番に向けて
他のWindowsがやるのと同じようにUNICODEでアクセスします。
これによってWindowsは他のWindoesからの共有の要求として処理しますので
正常に印刷ができるということになります。

ログイン機能と設定

動作原理を見ておわかりのように SMBプロトコルで通信したとしてもWindowsへのログイン情報が必要となります。

IBM のQNTCではIBM iのユーザー・プロフィールと同じユーザーと
パスワードをWindowsに登録する必要がありましたが
the WindowsライターではIBM iの装置情報に登録する必要があります。
従って IBM iの装置情報には

  • WindowsのIPアドレス
  • Windowsへのログインするためのユーザー、パスワード

を登録する必要があります。さらに

  • プリンタ名

も必要となります。
Windows10からは「通常使うプリンタ」ではなく最後に使用したプリンタが次に印刷するプリンタとなります。
従ってプリンタ名の登録も必要となります。
ログイン情報が揃えばプリンタ名は簡単に検索することができるようになっています。

(2)プリンタ定義テーブル(PDT)による印刷

the Windowsライターのもうひとつの印刷の方法はプリンタ定義テーブル(PDT)に従って印刷する方法です。
各プリンタ・メーカーの印刷制御コードは各プリンタ・メーカーによって異なったもので制御されています。

このため従来のプリンタ・セッションではSCS印刷ストリームを
変換テーブルを使って各社用の印刷ストリームに変換していました。
この変換テーブルが「プリンタ定義テーブル(PDT)」と呼ばれるものです。

MS-EMFを使えばPDTはもはや必要ないはずですが適用業務によっては
プリンタの制御コードをRPGやCOBOLで直接出力していめるような業務もあります。

例えばRPGで倍角印字の始まりと終わりの制御コードを出力しているような場合です。
このような場合はPDTを継承してPDTの印刷ストリームを出力する必要があります。
the Windowsライターはこのような特殊なケースに対応するようにPDTによる変換もサポートしています。
今までのPDTを IBM i のIFSに保存してPDTをパラメータとして指定するとPDTによる変換で印刷いることができます。

プリンタ定義テーブル(PDT)による印刷

※ プリンタ定義テーブル(PDT)を指定するのは、
RPGやCOBOLで印刷制御コードを出力しているような特殊な場合にだけ限定してください。

PDTを指定すると印刷の制御はPDTやプリンタのハードウェアの設定などに限定されます。
これに対してMS-EMFであれば用紙サイズや方向、印刷トレイの指示など柔軟な印刷方法が可能になります。