HCL Z and I Emulator: HACL による自動化

2020/8/19 - 読み終える時間: 7 分

前回の記事「HCL Z and I Emulator: PCSAPI を使った自動化」に続き、ホストアクセスクラスライブラリ (HACL) を使った自動化についての英語版ブログの記事 Automation using HACL の日本語版です。


Automation using HACL

2020年8月17日

著者: Sudhir Ranjan Rout / Senior Developer, HCL

画像の説明

PCSAPI を使用したオートメーションと EHLLAPI APIを使用したオートメーションに関する以前のブログに続き、このブログでは、ZIEWIN API の最も強力なセットである HACL(ホストアクセスクラスライブラリ)API について詳しく説明します。

ホストアクセスクラスライブラリ (HACL) は、アプリケーションプログラマがホストアプリケーションに簡単かつ迅速にアクセスできるようにするオブジェクトのセットです。 HCL ZIEWinは、さまざまなHACLレイヤーをサポートしています。

図1 HACLレイヤー 画像の説明

オートメーションオブジェクト(Visual Basic、Word、Excel など): ホストアクセスクラスライブラリオートメーションオブジェクトにより、ZIEWin は Microsoft COM ベースのオートメーションテクノロジー(以前はOLE オートメーションと呼ばれていました)をサポートできます。 HACL 自動化オブジェクトは一連の自動化サーバーで、Microsoft Visual Basic などの自動化コントローラーがプログラムで ZIEWin Communications のデータと機能にアクセスできるようにします。

:HCL ZIEWin によって提供されるオートメーションオブジェクトは、本来64ビットです。これらは、64ビットの Microsoft Office プログラムでのみ使用できます。

現在、以下のタイプのオートメーションオブジェクトがサポートされています。

  • C ++オブジェクト:

このC ++クラスライブラリは、以下を含むホスト接続の完全なオブジェクト指向の抽象化を提供します。

* ホスト表示スペース(画面)の読み取りと書き込み
* 画面上のフィールドの列挙
* 状況情報についてオペレーター標識域 (OIA) を読み取る
* ビジュアルエミュレータウィンドウに関する情報へのアクセスと更新
* ファイルを転送しています
* 重要なイベントの非同期通知を実行する
  • Javaオブジェクト:

Javaオブジェクトは、すべてのHACL関数にJavaラッパーを提供します。

  • LotusScript拡張: Host Access Class Library LotusScript Extension (LSX) は、LotusScript (HCL Notes およびすべての Lotus SmartSuite 製品のスクリプトおよびマクロ言語)の言語拡張モジュールです。この LSX により、ロータス製品のユーザーは、使いやすいスクリプト機能を通じて HACL 関数にアクセスできます。


ECL コンセプト - 接続、ハンドル、名前

ECL のコンテキストでは、接続は単一であり、ZIEWin エミュレーターウィンドウに固有です。接続は、接続ハンドルまたは接続名によって区別されます。ほとんどの HACL オブジェクトは特定の接続に関連付けられています。通常、オブジェクトは接続ハンドルまたは接続名をオブジェクトのコンストラクターのパラメーターとして受け取ります。たとえば、接続「B」に関連付けられた ECLPS(表示スペース)オブジェクトを作成するには、次のコードを使用します。

C++ ECLPS *PSObject; PSObject = new ECLPS(’B’);

Visual Basic Dim PSObject as Object Below is a graphical representation of the most commonly used autECL Objects Set PSObject = CreateObject("ZIEWIN.autECLPS") PSObject.SetConnectionByHandle("B")

HACL 自動化オブジェクト

図2 autECL オブジェクトの全体図 画像の説明

オートメーションサーバーの一部は、ZIEWin の操作性を制御するメソッドとプロパティを備えた実世界の直感的なオブジェクトとして実装されています。 各オブジェクトは、オートメーションホストアクセスクラスライブラリの autECL で始まります。 これらのオブジェクトを簡単な説明とともに以下に示します。

  • autECLConnList

接続リストには、特定のシステムのZIEWin接続のリストが含まれています。これはautECLConnMgrに含まれていますが、autECLConnMgrとは別に作成できます。

  • autECLConnMgr

接続マネージャーは、特定のシステムのZIEWin接続を管理するためのメソッドとプロパティを提供します。このコンテキストでの接続はZIEWinウィンドウです。

  • autECLFieldList

フィールドリストは、エミュレータ表示スペースのフィールドに対して操作を実行します。

  • autECLOIA

オペレーター情報エリアは、オペレーター情報エリアをクエリおよび操作するためのメソッドとプロパティを提供します。これはautECLSessionに含まれていますが、autECLSessionとは独立して作成できます。

  • autECLPS

表示スペースは、関連するZIEWin接続の表示スペースを照会および操作するためのメソッドとプロパティを提供します。これには、表示スペース内のすべてのフィールドのリストが含まれています。これはautECLSessionに含まれていますが、autECLSessionとは無関係に作成できます。

  • autECLScreenDesc

画面の説明は、画面を説明するメソッドとプロパティを提供します。これは、autECLPSオブジェクトまたはautECLScreenRecoオブジェクトで画面を待機するために使用できます。

  • autECLScreenReco

画面認識は、HACL画面認識システムのエンジンを提供します。

  • autECLScreenReco

画面認識は、HACL画面認識システムのエンジンを提供します。

  • autECLSession

セッションは、一般的なセッション関連の機能と情報を提供します。便宜上、autECLPS、autECLOIA、autECLXfer、autECLWinMetrics、autECLPageSettings、およびautECLPrinterSettingsオブジェクトが含まれています。

  • autECLWinMetrics

ウィンドウメトリックは、このオブジェクトに関連付けられているZIEWinセッションのウィンドウメトリックを照会するメソッドを提供します。たとえば、このオブジェクトを使用して、ZIEWinウィンドウを最小化または最大化します。これはautECLSessionに含まれていますが、autECLSessionとは独立して作成できます。

  • autECLXfer

ファイル転送は、このファイル転送オブジェクトに関連付けられたZIEWin接続を介してホストとワークステーション間でファイルを転送するためのメソッドとプロパティを提供します。これはautECLSessionに含まれていますが、autECLsessionとは独立して作成できます。

  • autECLPageSettings

ページ設定は、CPI、LPI、セッションの[ページ設定]ダイアログのフェイス名などの一般的に使用される設定をクエリおよび操作するためのメソッドとプロパティを提供します。これはautECLSessionに含まれていますが、autECLSessionとは独立して作成できます。

  • autECLPrinterSettings

プリンター設定は、セッションのプリンター設定ダイアログのプリンターやPDTモードなどの設定を照会および操作するためのメソッドとプロパティを提供します。これはautECLSessionに含まれていますが、autECLSessionとは独立して作成できます。


基本的にすべてのクラスは、プロパティ、メソッド、および (オプションで) イベントを提供します。これらは、ZIEWin ウィンドウ内の操作を相互作用し、制御するために連携して、または別々に使用できます。

前述のクラスとサンプルコードについての詳細情報は、ZIEWin のオンラインドキュメントでも閲覧できます。

以下のサンプルコードは、最も一般的なECLオブジェクトとメソッドの使い方を示しています。

1. Object Declaration Declare the Objects to be used DIM autECLPSObj as Object DIM autECLConnList as Object Dim autECLOIAObj as Object Dim PSText String

2. Initialize session object by Handle or by Name Define the purpose of the object type Set autECLPSObj = CreateObject("ZIEWIN.autECLPS") Set autECLConnList = CreateObject("ZIEWIN.autECLConnList") Set autECLOIAObj = CreateObject("ZIEWIN.autECLOIA") Refresh must be called to get latest connection info autECLConnList.Refresh Initialize the connection with the first in the list autECLPSObj.SetConnectionByHandle(autECLConnList(1).Handle) Initialize the connection with Session Name autECLOIAObj.SetConnectionByName("A")

3. Sendkey (String,Row,Col) sends the text on mentioned row and col location autECLPSObj.SendKeys "ZIEWIN API’s are very Powerful", 3, 1

4. Sendkey (KeyStroke) Send keystroke (Enter) on the green screen autECLPSObj.SendKeys “[Enter]”

5. GetText (Row, Col, Length) ' Gets the text of 10 bytes from row and col PSText = GetText (1,1,10)

6. SetCursorPos (Row, Col) ' sets the cursor position at row and col location autECLPSObj.SetCursorPos 2, 1

7. StartMacro (MacroName) ' Executes the ZIEWIN recorded .mac macro autECLPSObj.StartMacro "MacroName"

8. WaitforInputReady (time in millsec) waits for specified number of milliseconds autECLOIAObj.WaitForInputReady(10000)

9. Properties Number of rows and cols properties in green screen autECLPS class Object Rows = autECLPSObj.NumRows Cols = autECLPSObj.NumCols

10. GetCursorRow and GetCursorCol fetch rows and cols properties position CurPosRow = autECLPSObj.CursorPosRow CurPosCol = autECLPSObj.CursorPosCol

11. RegisterPSEvent/ RegisterCommEvent, RegisterKeyEvent Refer the attached example Excel application


サンプルコードのダウンロード

ZIEWin_hacl_sample


お問い合わせ

HCL ZIE での Web アプリケーションの整理、自動化機能、Lab サービスの提供に関する詳細については、こちらをご覧ください。

ZIO@hcl.com


HCL Z and I Emulator: PCSAPI を使った自動化

2020/8/13 - 読み終える時間: 6 分

HCL Z and I Emulator (ZIE) は、文字通り IBM のメインフレームにアクセスするためのエミュレーターであり、高度が付加機能を備えています。そのひとつの API について書かれた英語版ブログの記事 Automation using PCSAPI の日本語版を掲載します。


PCSAPI を使った自動化

2020年8月11日

著者: Sudhir Ranjan Rout / Senior Developer, HCL

画像の説明

はじめに

ZIEWin は、IBM メインフレーム/AS400/VT セッションと通信するためのエミュレータインターフェイスを提供します。これは、ホストのデータの読み取りと更新を行い、他のアプリケーションとホストをインターフェイスするために使用されます。トランザクションのエミュレータ画面上で手動タスクを実行すると、反復的になり、長期的には以下の問題を持つことになります。

  • 非効率
  • 冗長性があり、エラーが発生しやすい
  • 時間がかかるため高価

ZIEWin は、ユーザーが一般的に実行されるタスクを自動化できるようにするために、多くのアプリケーション・プログラミング・インターフェース (API) を公開しています。異なるAPIは特定の機能のセットで提供されており、異なる目的に使用でき、ユーザーの要件に基づいて異なるプログラミングインターフェイスを提供します。異なる API は、Visual Basic for Applications(したがって、MS Officeアプリケーションをサポート)、C/C++、C#、Java、LotusScript、REXなどのプログラミング言語をサポートしています。

ZIEWin が提供する API セットとその機能のリストは以下のとおりです。

  • Windows セッション API (PCSAPI) のためのZと私のエミュレータ:ZIEWin のセッション管理
  • エミュレータ高レベル言語API(EHLLAPI)。セッションが確立されると、ワークステーション アプリケーションとホスト システム間の相互作用を管理
  • Z and I Emulator for Windows Host Access Class Library (HACL)。アプリケーションプログラマがホストアプリケーションに簡単かつ迅速にアクセスできるようにするオブジェクトのセット セッションが確立された後、アプリケーションとホストシステムを使用できます
  • SRPI リクエスタープログラムを書くためのツールを提供する拡張コネクティビティファシリティ(ECF)

今回のブログでは、PCSAPI について詳しく見ていきます。

PCS Session APIは、ZIEWin セッションの起動、セッションのオープン、セッションのクローズ、接続、切断を行えます。EHLLAPI API は IBM EHLLAPI 通信標準(TN3270 と TN5250 プロトコル)と密接に結合されているため、セッション管理 API の機能はありません。ZIEWin のセッション API はまた、プリンタ、ページ、クエリワークステーションプロファイル/セッションリスト/エミュレータのステータスを設定するための機能を提供します。これらの API は、EHLLAPI/HACL API と組み合わせて使用することで、自動化サイクルを完成させられます。

関数呼び出し規約

ZIEWin セッション API は、プログラミングを簡単にするために、すべての関数のシンプルなプロトタイプに従っています。上述したように、これらの API は複数のプログラミング言語(VBA、C/C++、C#など)を使用してアクセスしてプログラムできます。

関数タイプ: API の戻り値の型 関数名: 呼び出される関数 引数: 関数に渡される入力引数で、1 から 3 までの値があります。

以下に、最も一般的に使用されるPCS APIとそのプロトタイプを示します。

1. PCConnectSession BOOL WINAPI PCConnectSession(char cShortSessionID)

2. PCDisconnectSession BOOL WINAPI PCDisconnectSession(char cShortSessionID)

3. pcsQueryConnectionInfo BOOL WINAPI pcsQueryConnectionInfo(char cShortSessionID, CONNECTIONINFO *ConnectionInfo)

4. PCStartSession ULONG WINAPI PCStartSession(PSZ lpProfile, char cShortSessionID, USHORT fuCmdShow)

5. pcsStopSession BOOL WINAPI PCStopSession(char cShortSessionID, USHORT fuSaveProfile)

6. pcsQuerySessionList ULONG WINAPI pcsQuerySessionList(ULONG Count, SESSINFO *SessionList)

これらのAPIの詳細については、こちらをご覧ください。

MacroExecutionBlockDiagram:

次の図は、ZIEWin の API - マクロエンジン - IBM ホストのフローのハイレベルビューを示しています。

画像の説明

コード スニップされたVBAコード (Excel 用)

A. Declarations

'Declaration for PCSAPI functions and defining their prototype to VBA engine
Declare PtrSafe Function pcsStartSession Lib "PCSAPI32.DLL" (ByVal buffer As String, ByVal SessionID As Integer, ByVal CmdShow As Integer) As Integer
Declare PtrSafe Function pcsStopSession Lib "PCSAPI32.DLL" (ByVal SessionID As Integer, ByVal SaveProfile As Integer) As Integer
'Declaration for EHLLAPI functions and defining their prototype to VBA engine
Declare PtrSafe Function ZIEWin_SendKey& Lib "PCSHLL32.DLL" Alias "hllapi" (HllFunctionNo&, ByVal HllData$, HllLength&, HllReturnCode&)
Declare PtrSafe Function ZIEWin_SetCursor& Lib "PCSHLL32.DLL" Alias "hllapi" (HllFunctionNo&, ByVal HllData$, HllLength&, HllReturnCode&)
Declare PtrSafe Function ZIEWin_ConnectPS & Lib "PCSHLL32.DLL" Alias "hllapi" (HllFunctionNo&, ByVal HllData$, HllLength&, HllReturnCode&)
'Defining Global Variable
Dim SessionID As Integer
Dim ProfileName As String

B. Entry Function

'Function entry point which drives the automation
Sub PCSAPISample()
SessionID = 65 'Session A
ProfileName = "Iseriesdemos.WS" 'change it session name of your preference
'call the LaunchZIEWinSession Sub
LaunchZIEWinSession ProfileName, SessionID
'Create a EHLLAPI connection with ZIEWin
ConnectZIEWinSession
'Move the cursor to desired location on the ZIEWin Screen
moveCursor 8, 53, 10
'Send a string to ZIEWin Screen
sendString "HelloWorld"
'Disconnect and close the ZIEWin Session
StopZIEWinSession SessionID
End Sub

C. ConnectZIEWinSession

'Function to establish connection to a ZIEWin session
Public Function ConnectZIEWinSession()
    HllFunctionNo = 1
    HllData = "A"
    HllLength = 4
    HllReturnCode = 0
    RC = ZIEWin_ConnectPS(HllFunctionNo, HllData, HllLength, HllReturnCode)
    If RC = 0 Then
        MsgBox "Connection Established"
    Else
        MsgBox "Connection Failed"
    End If

End Function

D. LaunchZIEWin Function

'Function to launch the ZIEWin session
Public Function LaunchZIEWinSession(ProfileName As String, SessionID As Integer)

    On Error Resume Next
    Dim RC As Integer

    'PCSStartsession take 'session profile file' and the session ID (65->ASCII->'A')
    RC = pcsStartSession(ProfileName, SessionID, 2)

    If RC = 0 Then
        MsgBox "ZIEWin Launched Successfully"
    Else
        MsgBox "ZIEWin Launched failed"
    End If
End Function

E. Stop ZIEWin Session

'Function to disconnect and stop the ZIEWin session
Public Function StopZIEWinSession()

    On Error Resume Next
    Dim ziewinStop As Boolean

    'PCSStopSession takes Session ID and save mode as input
    ziewinStop = pcsStopSession(SessionID, 2)
    If (ziewinStop = True) Then
        MsgBox "ZIEWin Closed Successfully"
    End If
End Function

サンプルコードをダウンロードしてみてください。

PCSAPIの呼び出しをテストするために使用できるエクセルのサンプルを添付します。

PCSAPI_ZIEWin _Sample

お問い合わせ

HCL ZIEでのWebアプリケーションの整理、自動化機能、ラボサービスの提供に関する詳細については、以下までお問い合わせください。

ZIO@hcl.com

Sudhir Ranjan Rout

Developer, Lab Services


About

HCL Japan の Software 部門の複数担当者で HCL Software 全般について記しています。