#59 IBM i 通信有無でプリンターセッション起動・終了させる

PCOM_00_top_logo.jpg

また化石ネタ。 しかもニッチ過ぎてスルー確定か?

昔作った、
 「プリンターセッションを、IBM System i (AS/400) との通信有無に合わせて起動・終了させる」
という機能のVisual Basic 6.0ソフトウェア(略してVB6)。


ダウンロード: PcomTermExec161.ZIP

解凍して次のファイルを適当なフォルダーに一緒に置く
 PcomTermExec.exe  ・・・ この実行ファイルを起動する
 PcomTermExec.ini   ・・・ あらかじめ設定必要

あらかじめ次の3つを入手、導入しておく。
PINGOCX
 http://www.vector.co.jp/soft/win95/prog/se141570.html
BASP21
 http://www.hi-ho.ne.jp/babaq/basp21.html
Visual Basic 6.0 Service Pack 6
(Windows7対応だが、すでにある程度VB6ランタイム導入済なので入れないで済むか様子を見る)
http://www.vector.co.jp/soft/win95/util/se342080.html

Windows XP環境、パーソナルコミュニケーションズ5.x に対応。
(パーソナルコミュニケーションズ5.x もXPでも使えた。Windows7環境でもイケるんじゃ・・・?)



◆ これは何??

遠隔地「拠点B」のプリンターセッション(PC側)を、
(1) ホスト(拠点A)との通信があれば起動
(2) ホスト(拠点A)との通信が切断されたら終了
PCOM_10_T-E_PIC1d.jpg
※プリンターセッションはパーソナルコミュニケーションズ5.x


PingでSystem i (AS/400)との通信を監視して無限に自動復旧対応させるというもの!
PC自体に問題がなければもうPCを気にする必要はありません。



◆ なぜそんなモノ作ったのか?

プリンターセッション(パーソナルコミュニケーションズ)は自動接続の設定で常時起動させておけば良さそうなモノなのだが、実際は万全ではない。 ホストのSystem i (AS/400)とのTCP/IP接続が、数時間~半日の切断や通信経路の異常切断などの後に回復しても、再接続しない事が多かった経験。 ホスト運用中の異常切断では System i 側の仮想装置がOFFになり、PC側のプリンターセッションの操作だけでは再接続できなかったり。
国外のプリンターセッションとなると常時面倒を見る者は居ない。 さてどうすんべ?
これを解決するために、プリンターセッションの終了~再起動の自動処理を外部のソフトウェアで制御させる考えに至った。
当然、プリンターセッション再起動では直前に装置名指定で コマンドVRYCFG *OFF~*ON をSystem i へ送る念の入れようである。 (試しに、PC側のTCP/IPを一時的に切断後、わざとSystem i の該当装置名をVRYCFG *OFFしてから再接続してみるといい。 復帰している事がわかるだろう。)


◆ 実行中の画面

起動すると、この様にホストのIPを表示し通信状態であれば白地に「response」となりプリンターセッションを起動する。
(直前に装置名指定で コマンドVRYCFG *OFF~*ON をSystem i へ送る)
ユーザー設定のタイミングで通信判定であればこの状態を維持する。
PCOM_12_T-E_PIC2b.jpg


ユーザー設定のタイミングで指定IPと通信していない事が判明すると、赤地に「no response」となりプリンターセッションを強制終了する。
通信切断の判定が継続されれば、この状態を維持する。
PCOM_13_T-E_PIC3.jpg


以上を、通信状態によって自動でプリンターセッションの起動・終了を制御する。

尚、制御できるセッション(装置)は1個だけ!!



◆「 PcomTermExec.ini 」の設定

実行ファイル PcomTermExec.exe を起動する前に必ず行う。

設定ファイル PcomTermExec.ini の記述を使用環境に合わせる
(注) 「\」は半角「¥」に置き換えて下さい
+------------------------------------------------------------+
[host] ホストIPアドレス
192.168.1.1              →System i (AS/400)のIPアドレスへ

[TimeOut] Ping待機時間(sec)
3                    →1回のPingで応答が無い場合の待ち時間

[Delay] Ping間隔(sec)
20                   →次回のPingまでの間隔

[5250] 5250セッション・プログラム pcsws.exe が存在するフォルダー(末尾\無しで記入)
C:\Program Files\IBM\Personal Communications

[5250ws] 5250セッションの定義ファイル(フルパスで指定)
C:\Program Files\IBM\Client Access\Emulator\Private\(定義ファイル).WS

[5250dev] 5250装置名
(5250装置名)          →プリンターセッション接続で使用するAS/400の装置名
                 System i (AS/400)コマンドVRYCFG *OFF~*ONを実行するのに必要
+------------------------------------------------------------+



◆各ボタンについて

[LOG]
 通信接続・切断の履歴表示
[EDT]
 上述の設定ファイルをメモ帳で開く。(編集用)
[IMMED]
 編集済の設定ファイルを即時有効化させる。
 ボタンを押さない場合はPcomTermExecを再起動しないと有効化されない。
 (このソフトウェアは設定ファイルを起動時に読んでいるだけなので。反映はユーザー任せなのだ。)



◆感想など

これはお仕事で人知れず作ったモノ。
だいたい会社に汎用機入れてもソレだけで済むワケは無く、末端にはPCがあり、PCにはアレコレと対応するソフトウェアが必要になる。 アレコレと作ったなぁー( ゜ρ゜) ボー
その辺、世のSystem i (AS/400)使いの方々はどうされているのだろう?
閑話休題。
System i (AS/400)から直接プリンターへLDP接続して済んでいるのなら悩むことは無いのだけれど、経験上はホストと遠隔であるほど(特に国外)プリンターセション立てた方がプリンター出力は安定している事が分かっている。
あと罫線印刷など文字列の出力で済まない場合、「PC+プリンターセション」の方が断然安定している。(System i 側の仮想装置の設定を工夫してプリンターセッションを不要にする事も可能だが、謎の不具合で運用が止まることがある。)
となると、「PC+プリンターセション」はSystem i (AS/400)と通信状態を維持していなければならないし、何らかの通信切断後には再接続していなければならない。
苦労しましたよ、この辺は。 「System i ~ PC ~ プリンター」の絡みとなると総合的に相談できる人が居ないものだ。
ま、画面と違ってプリンター出力は奥が深いのでこの辺で。
それと、自分はもうその世界とは無関係なのでこのソフトの更新はしない。

一応、、、
このソフトウェアを作成中は、セッション終了の手段が「PCOMSTOP /ALL」で可能である事を知らず、直接この2つを強制終了する仕様にしている。
 pcsws.exe
 pcscm.exe
問題は無かったのだが、使っていた「パーソナルコミュニケーションズ5.x」に依存している可能性もあるので、他のverについては対応出来ないかも知れない。

もう一度。
でも、もう更新はしない。
要望あればVB6ソース置くのでコメントちょうだいね。
環境無いなら Windows 7 (32bit) 用意してVB6開発環境作るべし! 使えるよ。


◆Visual Basic 6.0 のOSサポートについて少々

Wikipedia「Microsoft Visual Basic」の頁によると、

『Visual Studio .NET 2003以前のIDE製品は、Windows VistaおよびWindows Server 2008上での実行サポートが打ち切られたが、Visual Basicに関しては後継のVB.NET以降との互換性がほとんどなく、他開発環境への移行も難しいことから、マイクロソフトは例外的に32bit版のWindows VistaおよびWindows Server 2008でのVisual Basic 6.0のIDE実行(開発環境の実行)をサポートしている。ただし、64bit環境でのIDE実行はサポートされない。また、Windows 7およびWindows Server 2008 R2以降では開発環境の実行サポートも打ち切られている ( ただしマイクロソフトによると、Windows 7やWindows 8においてVisual Basic 6.0 IDEをテストし、アプリケーションの互換性に深刻な不具合がないかどうかを確認して、必要に応じて不具合の軽減措置を取ったとされている )
なお、Visual Basic 6.0で作成されたアプリケーションや、OSに同梱されるVB6ランタイムについては、Windows Vista、Windows Server 2008、Windows 7、Windows 8、およびWindows Server 2012での動作サポートがマイクロソフトによって表明されている。Windows 10でのVB6アプリケーション動作に関しても、サポートの継続がマイクロソフト公式ブログにて言及されている

などと手広いサポート状況である事にびっくりしている。 
今のところ、自分Windows7環境ではVB6開発は問題なさそうな感じではあるし(たいした規模ではないしね)、行けるところまで行こう。 新しい言語を覚える気が全くない(笑)


スポンサーサイト
(この一行は、各記事の最後に固定表示するサンプルです。テンプレートを編集して削除もしくは非表示にしてください。)

コメント

コメントの投稿

非公開コメント


(この一行は、各ページ下部に固定表示するサンプルです。テンプレートを編集して削除もしくは非表示にしてください。)