5250エミュレータ

24. 5250 エミュレーターからPCアプリケーションを起動するには?

PCOMM やクライアント・アクセス(iAccess) からエミュレータ画面を実行中に

PCアプリケーションを起動するためには 5250エミュレータには

iSeries Accessオーカーナイザー」 という大げさな名前の機能が用意されていて

STRPCO + [実行] してから ( オーガナイザーの開始 )

STRPCCMD PCCMD(‘NOTEPAD.EXE’) PAUSE(*NO) + [実行]

とすれば Windows の 「メモ帳」 のアプリケーションが起動する。

あるいは、

 STRPCCMD PCCMD('C:\Temp\MyText.txt') PAUSE(*NO)

を実行すれば C:\Temp\MyText.txt が 拡張子 .txt に関連づけられたアプリケーョンによって

オープンされる。

ところで STRPCO コマンドはオーガナイザーを開始するためのコマンドであるが、

最初に STRPCOSTRPCCMD の実行の前に実行しておかないと STRPCCMD の実行エラーとなる。

しかし STRPCO を2回目に実行すると STRPCO

「 オーガーナイザーは既に活動状態である 」 とのエラー・メッセージを出して終了してしまう、

という誠に不便なコマンドでもある。

そこで STRPCO + STRPCCMD を自分のCLPソースに組み込むとなると MONMSG

エラーを無視するようにしておく必要がある。

STRPCO                                     
MONMSG     MSGID(IWS4010)                  
STRPCCMD   PCCMD(&PCCMD) PAUSE(*NO)        
MONMSG     MSGID(IWS4010 IWS4032) EXEC(DO) 
:
ENDDO

こんな具合である。

余談だが実はオーガナイザーの機能を実現するのに、STRPCO コマンドは全く必要ないはずである。

IBM じゃないのにどうして、そのようなことがわかるのかと言うと実はオーガナイザーの

仕組みは至って簡単であり、STRPCCMD で指示されたPCコマンドが 5250 ストリームの中に

埋め込まれているだけであり、5250 エミュレータは 5250画面に PCコマンドを表示せずに

自分自身が PCコマンドを実行しているだけなのである。

上記の例であると 「C:\Temp\MyText.txt」 という文字列そのものが 5250ストリームの中に

埋め込まれている。

ところがこの文字列 「C:\Temp\MyText.txt」 はエミュレータによって取り除かれて

5250画面上では表示はされない。

PCコマンドが5250画面に表示されていないのでユーザーは内部で特別な処理があたかも

実行されているかのように見えるが、5250ストリームに埋め込んだだけの話である。

5250エミュレータは自分で取り出した文字列 「C:\Temp\MyText.txt」 を実行するだけである。

5250エミュレータは元々PCクライアント上にいるのだから PCコマンドを実行するのは

至極簡単なことである。

このように STRPCO が実行されていなくても PCコマンドを見つけることができるので、

技術的には STRPCO を実行しなくても STRPCCMD を実行できるはずなのである。

事実、AutoWebSTRPCO は必要ない。AutoWebも 5250 エミュレータと同じように

5250ストリームを解析しているのでオーガナイザー機能を持っているのである。