PC5250/CA400

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ストリームを解析しているのでオーガナイザー機能を持っているのである。