12-2.z/OS(TSO)の文字モードを判定・制御する

By 岡田 - Posted: 2016/08/31 Last updated: 2016/08/31 - Leave a Comment
印刷用ページの表示 印刷用ページの表示
Tcplinkのマクロをvbaで作るテストの段階でマクロを動作する時に考慮する必要がある事項にぶつかりました。

それは、TSOの文字モードの判定と制御です。

これはz/OSのTSOを使って判った事なのですが、TSO(Tcplink)ではALT+F2で文字モードをセション内で切り替える事ができます
キーを押下する毎に英小文字とカタナカ文字のモードが交互に切替わります

<文字モードが英小文字の時の画面>
英小文字2

<文字モードがカタカナの時の画面>
カタカナ2


Tcplinkマクロを利用している際、文字モードが特定条件でしか動作しない場合があり、(通貨記号”¥”円マークを使う場合など)
この場合、現在動作しているセションの文字モードを判定して、動作する文字モードに変更する事が必要になります

この処理をTcplinkマクロで行える事を確認しました

TSOで文字モードを判定、制御する方法

以下がマクロ文です(02,04行目の通貨記号”円マーク”は半角で登録してください)

01|move cursor (06,07)
02|STRING “¥¥”
03|wait 1
04|if string (06,07) “¥”
05|jump false altf2
06|jump altf0
07|;
08|:altf2
09|message “文字モードを変更します”
10|emulator key [reset]
11|until input
12|emulator key [character mode]
13|;
14|:altf0
15|  :

処理の内容を説明します。
6行,7桁目に2行目で入力した円マークを4行目で判定、円マークであればaltf0に飛んで15行目以降の処理を続行します。円マークでない場合、altf2に飛んでメッセージを出した後、[character mode]を入力。文字モードを変更します


日立のTSSの1バイト文字モード

日立VOS3で長年エンジニアとしてTSSなどの作業をしていた時、文字コードで苦労する事はありませんでした。

VOS3では独自の1バイト文字コードとして(拡張EBCDIK、EBCDIKダッシュ)が主流となっており、通常運用されています。数字、英大文字、カタカナ、特殊記号をベースに、空いているコードに英小文字を当てはめています。今回、コード表は取得できなかったのですが、日立のTSSユーザであれば簡単にコード表を作れると思います。

拡張EBCDIK(EBCDIKダッシュ)コードが出来たのは、1989年から1990年初頭だったと記憶しています。
最初に目にしたのは「VOS3 C」のマニュアル付録に掲載されていた拡張EBCDIK(EBCDIKダッシュ)コード表です。

当時、日立はVOS3で稼動するC言語として「VOS3 C」をリリースしました。
C言語は英小文字でソースコードを作りますが、カタカナ入力も欠かせないと判断し、拡張EBCDIK(EBCDIKダッシュ)コードを作ったようです。今は「最適化C」となっていますが、拡張EBCDIKコード表が付録に掲載されていなかったというのが私の記憶です。

拡張EBCDIKは日立独自の1バイトコードのため、VOS3から他のシステムにリプレースする場合、MVS互換システムへのリプレースであっても英小文字等のコード変換が必要になります。

SYS1.PARMLIB(JAASYS00)でシステムで使う1バイトコードを設定できますので、他社リプレース前に確認する事は可能と思います。
Posted in Tcplinkマクロ活用(拡張編) • • Top Of Page