ダイナミック・リンク方式

アプリケーションは、ダイナミック・リンク方式を使用して、実行時にオペレーティング・システムに対する呼び出しを行い、Z and I Emulator for Windows EHLLAPI モジュールをロードし、その中の hllapi エントリー・ポイントを見つけます。この方式では、アプリケーションにより多くのコードが必要となりますが、 アプリケーションはエラー条件をより一層制御できるようになります。例えば、Z and I Emulator for Windowsの EHLLAPI モジュールが見つからない場合、アプリケーションはユーザーに特定のエラー・メッセージを表示することができます。

ダイナミック・リンクを使用するには、アプリケーションは適切な Z and I Emulator for Windows モジュールをロードして、エントリー・ポイントを見つける必要があります。エントリー・ポイントは、 名前ではなく、その序数で見つけられるようにすることをお勧めします。その序数は、ヘッダー・ファイルに定義されています。次の 32 ビット Windows コードは、IBM® 標準 32 ビット EHLLAPI モジュールをロードし、hllapi エントリー・ポイントを見つけて 、EHLLAPI 関数呼び出しを行います。
  #include "hapi_c.h"
 
  HMODULE Hmod;                                         // Handle of PCSHLL32.DLL
  long (APIENTRY hllapi)(int *, char *, int *, int *);  // Function pointer
  int HFunc, HLen, HRc;                                 // Function parameters
  char HBuff[1];                                        // Function parameters
 
  Hmod = LoadLibrary("PCSHLL32.DLL");                   // Load EHLLAPI module
  if (Hmod == NULL) {
    // ... Error, cannot load EHLLAPI module
  }
 
  hllapi = GetProcAddress(Hmod, MAKEINTRESOURCE(ord_hllapi));
                                                       // Get EHLLAPI entry point
  if (hllapi == NULL) {
    // ... Error, cannot find EHLLAPI entry point
  }
 
  HFunc = HA_RESET_SYSTEM;                              // Run EHLLAPI function
  HLen  = 0;
  HRc   = 0;
  (*hllapi)(&Func, HBuff, &HLen, &HRc);
  if (HRc != 0) {
    // ... EHLLAPI access error
  }