FontCnv HOSTシリーズ 製品概要
Typeフォントへスピーディに高精度に変換
外字を含むホストデータをWindows上で扱う環境を提供します。
通常、ホストデータをWindows環境で扱う場合、
  • ホストデータをWindowsコード(シフトJIS)へコード変換
  • ホストデータに外字が含まれていたら、外字を対応付けたうえで外字フォントを作成しWindowsシステムへ登録
と言った非常に面倒な2つの作業が必要です。
ところが、FontCnv HOSTシリーズを使用すれば、Windowsアプリケーションは
  1. パソコン側へ転送済み無変換ホストデータをリードする
  2. コード変換モジュールでホストデータをWindowsコードへ動的変換
    この時、外字が含まれていたら オンデマンド登録します。
  3. Windowsアプリケーションは、コード変換されたWindowsコードで画面表示/印刷する。
だけです。
Windowsコード(シフトJIS)へ変換するので、Microsoft Visual Basic、Visual C++、日立 COBOL85などの シフトJIS標準インタフェースで利用できます。
特徴
  • ホストで登録済みの膨大な外字資産(ビットマップ外字)を流用できます
    ホストのビットマップ外字とWindowsシステムの外字は 互換性がありません。
    外字コードを対応付けた上で外字エディタなどで登録する膨大な作業が発生します。
    FontCnv HOSTシリーズを使用すれば、この面倒な作業を簡単に実現できます。
    Windows用の外字フォントを別途用意する必要はありません。
  • 8000文字以上の外字を含むホストデータを扱えます
    一度に画面表示できる外字数は最大1880文字です。(*1)
  • 外字のコード対応を意識しません
    Windowsアプリケーションはホスト外字コードとWindows外字コードの対応を意識する必要はありません。コード変換が返すWindowsコードを そのまま扱うだけです。
  • 強力なホスト連携
    ホスト側での外字追加にも簡単に対応できます。追加分だけを変換すればそれでOK。
  • 統一した外字環境を実現
    外字を扱うパソコンが複数台存在する場合でもネットワークで接続された 環境であれば、代表端末と簡単に同期できます。
(*1)Windowsシステムの仕様としてシステムへ登録できる外字はシフトJISコードでは最大1880文字です。 予め外字エディタで登録するとしても最大1880文字までしか登録できません。
その1880文字の制限内で有効利用するのが、FontCnv HOSTシリーズです。
対応アプリケーション
FontCnv/H対応アプリケーションはFontCnv/H 開発キットを使用し作成します。
コード変換モジュールおよび外字オンデマンド登録モジュール は実行時ライブラリDLLで提供します。
コード変換モジュールは、人名などの無変換ホストデータをパラメタにコールすると Windowsコードに変換した結果を返す簡単なインタフェースです。
対応する開発環境は Microsoft社のVisual Basic、Visual C++、または日立製作所殿のCOBOL85です。簡単なインタフェースなのでVisual Basicの開発経験者であれば簡単に対応できます。

ユーザアプリケーション側で独自にコード変換を行う場合、 直接外字オンデマンドモジュールを呼び出す事もできます。
外字オンデマンド登録
作成した対応アプリケーションで外字が使用されるとその場でWindowsに登録する機能です。
  • 外字の対応付け
    ホスト外字コード→Windows外字コードの対応付けはコード変換モジュールが自動的に行います。
  • 1880文字の範囲を有効利用
    1880文字範囲で登録済みのコードは再利用しながら、満杯になると最古のコードを再利用します。
FontCnv HOSTシリーズ サンプルコーディング
処理概要 赤くコーディングされた箇所がFontCnv/HOSTの処理です。
NDCEx_Init() 初期処理
ユーザコーディング データベースなどからKEISデータを読み込む
NDCEx_StringKtoS() KEISデータをシフトJIS文字列へ変換
この時外字が含まれていればオンデマンド登録
ユーザコーディング シフトJIS文字列を画面標示/印刷など...
NDCEx_Term() 終了処理

実行画面サンプル(「しま」が外字、以外は内字です)

C言語のリファレンスマニュアル抜粋(コード変換)
NDCEx_Init
(PC COBOL85 サービス用:NDCSvc_Init)
BOOL NDCEx_Init(VOID)

NDCEx_Init関数は、コード変換ライブラリを初期化します。
戻り値
関数が正常に終了した場合は TRUE を返します。
それ以外の場合は FALSE を返します。
備考
アプリケーションは終了する前にNDCEx_Term関数を呼び出して、コード変換ライブラリが保持しているリソースを開放しなければなりません。
参照
NDCEx_Term
NDCEx_Term
(PC COBOL85 サービス用:NDCSvc_Term)
BOOL NDCEx_Term(VOID)

NDCEx_Term関数は、コード変換ライブラリが保持しているリソースを開放します。
戻り値
関数が正常に終了した場合は TRUE を返します。
それ以外の場合は FALSE を返します。
備考
NDCEx_Init関数を呼び出したアプリケーションは終了する前に必ずNDCEx_Term関数を呼び出します。
この関数は、Windowsシステム標準外字をNDCEx_Init関数をコールする前の状態へともどします。
参照
NDCEx_Init
NDCEx_StringKtoS
(PC COBOL85 サービス用:NDCSvc_StringKtoS)
LONG NDCEx_StringKtoS(LPBYTE pSjis, LPBYTE pHost, BOOL fStShift, LONG nSjisSz, LONG nHostCnt)

NDCEx_StringKtoS関数は、指定されたEBCDIKコード,KEISコードで構成されたホストデータをシフトJISデータへコード変換します。
パラメータ 説明
pSjis 変換後のデータの内容を受け取るバッファの先頭を差すアドレスを指定します。
変換後のデータは、NULL文字で終了する文字列です。
このバッファのサイズは、少なくともnSjisSzで指定されたサイズよりも大きくなくてはなりません。
pHost 変換するホストデータの先頭のアドレスを指定します。
変換中にNULL文字を認識しても変換は続行されます。nHostCntで指定されたサイズ分すべてを変換するまで関数は制御を戻しません。
fStShift 変換するホストデータの初期SI,SO状態を指定します。
ホストデータがSI(0A42)16状態より変換が開始される場合はTRUEを指定します。
ホストデータがSO(0A41)16状態より変換が開始される場合はFALSEを指定します。
nSjisSz 変換後のバッファのサイズをバイト単位で指定します。
nHostCnt 変換するホストのサイズをバイト単位で指定します。
戻り値
関数が正常に終了した場合は 変換されたNULL文字を含まないバイト数を返します。もしバッファのサイズが変換後のデータよりも小さかった場合は、変換後のデータサイズ(NULL文字を含まない)を返します。
それ以外の場合は -1 を返します。
備考
漢字フィールドのデータを変換する場合はfStShiftにTRUEを、英数字フィールドのデータを変換する場合はFALSEを指定します。
変換データには、SI (0A42)16,SI (0A42)16が正しく含まれていなければなりません。
関数は環境設定で指定された内容に従って、pHostを変換します。
参照
環境設定

C言語のサンプルコーディング

#include	<Windows.H>
#include	"FcforSVC.h"	// FontCnvヘッダーのインクルード
			// サービス対応(NT4.0専用)

	・・・省略・・・

/*
 * 初期処理
 */
static int	InitInstance(hInstance,lpCmdLine,nCmdShow)
HANDLE	hInstance;
LPSTR	lpCmdLine;
int	nCmdShow;
{
	HWND	hWnd;
	
	/*
	 * メインウィンドウ作成
	 */
	hWnd = CreateWindowEx(WS_EX_DLGMODALFRAME,
	                      ClassName,AppTitle,
	                      WS_POPUPWINDOW | WS_CAPTION,
	                      0,0,500,500,
	                      NULL,NULL,hInstance,NULL);
	if (!hWnd) {
		/*
		 * WINDOWの作成に失敗したため終了
		 */
		MessageBox(NULL,"xxx",AppTitle,MB_OK);
		return (FALSE);
	}
	/*
	 * Window 表示
	 */
	ShowWindow(hWnd,SW_SHOW);
	/*
	 * FontCnv/Dの初期化
	 * プログラム開始時に1回だけコールする
	 * ここからFontCnv/Dのサービスが開始する
	 */

	if (NDCEx_Init() == FALSE) {
		MessageBox(NULL,"xxx",AppTitle,MB_OK);
		return(FALSE);
	}
	return (TRUE);
}

LONG WINAPI MainWndProc(hWnd,message,wParam,lParam)
HWND	hWnd;
UINT	message;
WPARAM	wParam;
LPARAM	lParam;
{
	switch (message) {
	case WM_COMMAND :
		return(WM_COMMANDproc(hWnd,,,,,,);
	case WM_DESTROY :
		/*
		 * 終了処理
		 * プログラム終了時に1回だけコールする
		 * FontCnv/Dサービスが完了する
		 * Windowsシステムの外字は元の状態に戻る
		 */
		NDCEx_Term();
		PostQuitMessage(0);
		return (TRUE);
	case WM_LBUTTONDOWN:
============= 以降省略 ======================================


static int	Display(hWnd,keisBuff,KeisSz)
HWND	hWnd;
LPBYTE	*KeisBuff;
LONG	KeisSz;
{
	HDC		hDC;
	HFONT		hFontOLD;
	char		string[128];
	
	hDC = GetDC(hWnd);
	hFontOLD = SelectObject(hDC,hFont);
	SetBkColor(hDC,RGB(255,255,255));
	SetTextColor(hDC,RGB(30,30,30));

	・・・省略・・・

	/*
	 * コード変換処理
	 * KeisBuff=(59a1,c3ab,b9a7,bbcb)が
	 * string=(fxxx,924a,8d46,8e6a)にコード変換されます
	 * ユーザプログラムは内字/外字を意識する必要はありません
	 */
	sz = NDCEx_StringKtoS(
                        string,   // ここへ変換結果が格納される
                        KeisBuff, // 変換元KEISデータ
                        1,        // 全角データで開始
                        128,      // stringの最大
                        KeisSz);  // KEISデータサイズ
	
	/*
	 * stringはシフトJIS文字列に変換されているので
	 * そのまま画面に表示、プリンタへ印刷できます。
	 * 外字は(F040)〜(F9FC)の範囲でオンデマンド登録済み
	 */
	TextOut(hDC,50,CharY * Row,string,sz);

	・・・省略・・・
	
動作環境
OS FontCnv/HOSTWin10 Windows 10 Pro
FontCnv/HOSTWin7 Windows 7 Ultimate/Enterprise/Business
FontCnv/HOST2008S Windows Server 2008 standard
FontCnv/HOSTVista Windows Vista Ultimate/Enterprise/Business
FontCnv/HOST2003S Windows Server 2003 Standard edtion
FontCnv/HOSTXP Windows XP Professional
対象ホスト外字 日立ホストシリーズ
(32ドットビットマップ)
漢字処理ユティリティKAPS対応
日立ellesシリーズ[elles3, elles7]
(24ドットビットマップ)
富士通ホストシリーズ
(24ドットビットマップ)
開発言語環境 Microsoft Visual C++ バージョン4.0 および4.2
Microsoft Visual Basic バージョン5.0 および6.0
日立製作所 PC-COBOL85