AIX

通信管理

XNF/AS　プログラマーズガイド　HSC編

解説・文法書

3000-3-B46-10

目　　次

前書き

変更内容

はじめに

第1編　解説

1.　通信管理の概要

1.1　XNF/ASの特長

1.2　HSC-API機能

2.　HSC-APIの概要

2.1　アプリケーションプログラム間の通信の流れ

2.2　同期方式と非同期方式

2.3　ライブラリ関数

2.4　インタフェース構造体

第2編　文法

3.　ライブラリ関数の文法

3.1　アプリケーションプログラムの作成手順

3.2　ライブラリ関数の記述方法

3.3　BT_CANL( )

3.4　BT_CHECK( )

3.5　BT_CLOSE( )

3.6　BT_IDLT( )

3.7　BT_LCLS( )

3.8　BT_LOPN( )

3.9　BT_MDFY( )

3.10　BT_OPEN( )

3.11　BT_RCTN( )

3.12　BT_RINI( )

3.13　BT_RTXT( )

3.14　BT_SELECT( )

3.15　BT_SETDIAL( )

3.16　BT_WCTN( )

3.17　BT_WDSC( )

3.18　BT_WEOT( )

3.19　BT_WINI( )

3.20　BT_WRST( )

3.21　BT_WTTD( )

3.22　BT_WTXT( )

3.23　インタフェース構造体の記述方法

3.24　DCT

3.25　IDLST

3.26　LCB

3.27　ライブラリ関数とインタフェース構造体の関係

付録

付録A　用語解説

付録B　データ形式

付録B.1　HSC-AP→通信管理

付録B.2　通信管理→HSC-AP

付録B.3　コード体系

付録C　シーケンス例

付録D　従来製品との差異

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2002, 2009, Hitachi, Ltd.

前書き

■ 対象製品

適用OS：AIX 5L

P-F1M14-511A　 XNF/AS/BASIC　 01-02

適用OS：AIX

P-F1M14-5121A　 XNF/AS/BASIC　 02-01

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

AIXは，米国におけるInternational Business Machines Corporationの登録商標です。
AIX 5Lは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
UNIXは，X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標です。

■ 発行

2002年9月（第1版）3000-3-B46
2009年12月（第2版）3000-3-B46-10

■ 著作権

All Rights Reserved. Copyright (C) 2002, 2009, Hitachi, Ltd.

変更内容

変更内容（3000-3-B46-10）　XNF/AS/BASIC 01-02（適用OS：AIX 5L），XNF/AS/BASIC 02-01（適用OS：AIX）

追加・変更内容 | 変更個所
64ビットカーネルで動作できるようにしました。 | －

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，XNF/AS/BASICのAPIについて説明したものです。

このマニュアルの対象となるプログラムプロダクトを次に示します。

適用OS：AIX 5L

P-F1M14-511A　XNF/AS/BASIC

適用OS：AIX

P-F1M14-5121A　XNF/AS/BASIC

対象読者

XNF/AS/BASICを利用してアプリケーションプログラムを設計・作成する方を対象としています。また，マニュアル「通信管理　XNF/AS　解説・運用編」および「通信管理　XNF/AS　構成定義編」の内容を理解していること，HSC1手順およびHSC2手順を理解していることを前提とします。

マニュアルの構成

このマニュアルは，次に示す編，章と付録から構成されています。

第1編　解説

第1章　通信管理の概要

XNF/ASおよびXNF/AS/BASICの特長について説明しています。また，XNF/AS/BASICでアプリケーションプログラム間の通信をするためのHSC-API機能について説明しています。

第2章　HSC-APIの概要

HSC-APIについて理解するために，アプリケーションプログラムの通信の流れと，同期方式と非同期方式の概念について説明しています。また，HSC-APIで使用するライブラリ関数およびインタフェース構造体について説明しています。

第2編　文法

第3章　ライブラリ関数の文法

アプリケーションプログラムの作成手順，ライブラリ関数，およびインタフェース構造体の記述方法について説明しています。

付録A　用語解説

このマニュアルで使用している用語の意味について説明しています。

付録B　データ形式

HSC-APIでHSC-APから通信管理にもらうデータの形式，逆に通信管理からHSC-APに通知するデータの形式について説明しています。

付録C　シーケンス例

HSC1手順またはHSC2手順でのシーケンスについて説明しています。

付録D　従来製品との差異

従来製品（HI-UX/WE2上で動作するXNF/S-E2）との差異について説明しています。

関連マニュアル

このマニュアルの関連マニュアルを次に示します。必要に応じてお読みください。

通信管理　XNF/AS　解説・運用編（3000-3-B41）（AIX 5L用）

通信管理　XNF/AS　構成定義編（3000-3-B42）（AIX 5L用）

通信管理　XNF/AS　解説・運用編（3000-3-B61）（AIX用）

通信管理　XNF/AS　構成定義編（3000-3-B62）（AIX用）

AIXマニュアル（AIXに付属するCD-ROMマニュアルなど）

読書手順

このマニュアルは，利用目的に合わせて直接章を選択して読むことができます。利用目的別に，次の流れに従って，▼の部分をお読みいただくことをお勧めします。

このマニュアルでの表記

このマニュアルでは，製品名称を次に示す略称で表記しています。

製品名称 | 略称
AIX 5L V5.1 | AIX 5L | AIX
AIX 5L V5.2
AIX 5L V5.3
AIX V6.1
Extended HNA based Communication Networking Facility/for Advanced Server | XNF/AS
Extended HNA Based Communication Networking Facility/for Advanced Server/BASIC | XNF/AS/BASIC

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

常用漢字以外の漢字の使用について

このマニュアルでは，常用漢字を使用することを基本としていますが，次に示す用語については，常用漢字以外の漢字を使用しています。

個所（かしょ）

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

1.　通信管理の概要

この章では，XNF/ASおよびXNF/AS/BASICの特長を説明します。また，XNF/AS/BASICでアプリケーションプログラム間の通信をするためのHSC-API機能について説明します。

＜この章の構成＞

1.1　XNF/ASの特長

1.2　HSC-API機能

1.1　XNF/ASの特長

XNF/ASは，多数の回線をサーバ（EP8000シリーズ）に接続できるようにする通信管理プログラムです。

XNF/ASには次のような特長があります。

大規模なネットワークの構築

多様な通信プロトコルへの対応

構成情報の作成と管理

連続運転への対応

保守機能の強化

ハードウェア障害に対する機能の強化

このマニュアルでは，通信管理XNF/ASを構成するプログラムプロダクトのうち，XNF/AS/BASICのHSC-APIについて説明します。XNF/AS/BASICは，EP8000シリーズの回線アダプタによって，HSC1手順またはHSC2手順でアプリケーションプログラム間の通信をするためのAPIを提供するプログラムプロダクトです。

1.2　HSC-API機能

XNF/AS/BASICでは，相手システムとHSC1手順またはHSC2手順で通信するために，アプリケーションプログラムとのインタフェースを設けています。これをHSC-APIといいます。システムのネットワークソフトウェアは，HSC-APIを使用することによって，HSC1手順またはHSC2手順で，回線の接続，データの送受信，回線の切断を行うことができます。HSC-APIは，C言語のライブラリ関数として提供されています。

HSC-APIのサービスの範囲を図1-1に示します。

図1-1　HSC-APIのサービス範囲

2.　HSC-APIの概要

この章では，HSC-APIについて理解するために，アプリケーションプログラムの通信の流れと，同期方式と非同期方式の概念について説明します。また，HSC-APIで使用するライブラリ関数およびインタフェース構造体について説明します。

＜この章の構成＞

2.1　アプリケーションプログラム間の通信の流れ

2.2　同期方式と非同期方式

2.3　ライブラリ関数

2.4　インタフェース構造体

2.1　アプリケーションプログラム間の通信の流れ

XNF/AS/BASICでは，HSC-APIを使用して通信するアプリケーションプログラムをHSC-APといいます。HSC-APは，一つまたは複数の回線を使用して通信できます。

ここでは，ライブラリ関数を発行して，HSC1手順またはHSC2手順で行うHSC-APの通信の流れを説明します。

＜この節の構成＞

(1)　ドライバのオープン・クローズ

(2)　回線のオープン・クローズ

(3)　回線の接続・切断

(4)　データの転送

(1)　ドライバのオープン・クローズ

HSC-APは，利用する回線を識別するUNIXファイルをオープンして，HSC-APと回線を管理している通信管理との間の通信路を確立します。これをドライバのオープンといいます。逆に，UNIXファイルをクローズして，HSC-APと通信管理との間の通信路を解放することを，ドライバのクローズといいます。

回線を識別するための番号を回線識別子といい，ドライバをオープンしたときにリターン値として返されるファイル記述子がこれに当たります。HSC-APは，この回線識別子を指定してライブラリ関数を発行することで，回線を識別できます。

(2)　回線のオープン・クローズ

HSC-APは，回線識別子を指定して回線の初期化を要求します。これを回線のオープンといいます。回線のオープンが完了すると，HSC1手順の回線は，相手局と通信できる状態になります。HSC2手順の回線は，相手局との接続のための発信，または着信ができる状態になります。

逆に，オープンされた回線を使用できない状態にすることを回線のクローズといいます。

(3)　回線の接続・切断

HSC2手順による公衆回線での通信では，回線のオープン後，相手局との間の回線を接続する必要があります。回線の接続が完了すると，相手局と通信できる状態になります。

相手局とのデータ送受信が終了したとき，接続された回線を切断し通信を終了します。

(4)　データの転送

接続された回線を介して，データの送信または受信ができます。

2.2　同期方式と非同期方式

通信管理がライブラリ関数を処理する方法には，同期方式と非同期方式の2種類があります。同期方式，または非同期方式のどちらを使用するかは，LCBテーブルで指定します。

＜この節の構成＞

(1)　同期方式

(2)　非同期方式

(1)　同期方式

同期方式とは，ライブラリ関数を呼び出したあと，通信管理側の処理がすべて完了した時点でアプリケーションプログラムに制御が戻る方式です。

(2)　非同期方式

非同期方式とは，ライブラリ関数を呼び出したあと，通信管理側の処理が完了してもしなくても，すぐにアプリケーションプログラムに制御が戻る方式です。

アプリケーションプログラムは，selectシステムコールまたはライブラリ関数BT_SELECT( )，およびBT_CHECK( )を使用して，処理の完了を確認できます。

非同期方式が使用できるライブラリ関数については，「表2-1　ライブラリ関数一覧」を参照してください。

同期方式と非同期方式を図2-1に示します。

図2-1　同期方式と非同期方式

2.3　ライブラリ関数

HSC-APIで使用するライブラリ関数の一覧を表2-1に示します。また，ライブラリ関数発行基本シーケンスを図2-2に，ライブラリ関数発行シーケンス（テキスト一括送受信）を図2-3に示します。

表2-1　ライブラリ関数一覧

ライブラリ関数 | 機能概要 | 非同期方式
BT_CANL( ) | 受信要求を，キャンセルします。 | －
BT_CHECK( ) | 完了した非同期方式の関数の結果を取り込みます。 | －
BT_CLOSE( ) | ドライバをクローズします。 | －
BT_IDLT( ) | 公衆回線情報を設定します。 | －
BT_LCLS( ) | 回線をクローズします。 | ○
BT_LOPN( ) | 回線をオープンします。 | ○
BT_MDFY( ) | 回線の属性を設定します。 | －
BT_OPEN( ) | ドライバをオープンします。 | －
BT_RCTN( ) | 相手局に応答を送信し，テキストを受信します。 | ○
BT_RINI( ) | 相手局からENQを受信します。 | ○
BT_RTXT( ) | 相手局からENQ受信に対し肯定応答送信後，テキスト（またはブロック）受信の一連の動作をします（BT_RINI( )+BT_RCTN( )の動作を行います）。 | ○
BT_SELECT( ) | 非同期方式の関数の完了を監視します。 | －
BT_SETDIAL( ) | 回線交換接続時，短縮ダイヤルの登録，閉域登録・登録解除を行います。 | ○
BT_WCTN( ) | 相手局にテキストを送信し，応答を受信します。 | ○
BT_WDSC( ) | 公衆回線接続時，相手局にDLE・EOTを送信し回線を切断します。 | ○
BT_WEOT( ) | 公衆回線接続時，相手局にEOTを送信し，相手局からEOTを受信します。 | ○
BT_WINI( ) | 相手局にENQを送信し，応答を受信します。 | ○
BT_WRST( ) | 相手局にEOTを送信し，テキスト送信を終結します。 | ○
BT_WTTD( ) | 相手局にテキスト一時延期を送信し，応答を受信します。 | ○
BT_WTXT( ) | 相手局にENQ，テキスト（1ブロックだけ）送信，およびEOT送信の一連の送信動作を行います（BT_WINI( )+BT_WCTN( )の動作を行います）。 | ○

（凡例）

○：同期方式または非同期方式が使用できます。

－：同期方式だけ使用できます。

図2-2　ライブラリ関数発行基本シーケンス

図2-3　ライブラリ関数発行シーケンス（テキスト一括送受信）

2.4　インタフェース構造体

インタフェース構造体は，アプリケーションプログラムと通信管理との間のインタフェース情報を受け渡しするための領域です。アプリケーションプログラムは，ライブラリ関数を発行する前に，その関数で必要な情報をインタフェース構造体（テーブル）に設定しておきます。また，通信管理からのリターン情報は，関数が完了したときにインタフェース構造体に設定されています。

HSC-APIで使用するインタフェース構造体は，次に示す三つで構成されます。

DCT（Dynamic Configuration Table）

IDLST（IDentification LiST）

LCB（Line Control Block）

3.　ライブラリ関数の文法

この章では，アプリケーションプログラムの作成手順，ライブラリ関数，およびインタフェース構造体の記述方法について説明します。

＜この章の構成＞

3.1　アプリケーションプログラムの作成手順

3.2　ライブラリ関数の記述方法

3.3　BT_CANL( )

3.4　BT_CHECK( )

3.5　BT_CLOSE( )

3.6　BT_IDLT( )

3.7　BT_LCLS( )

3.8　BT_LOPN( )

3.9　BT_MDFY( )

3.10　BT_OPEN( )

3.11　BT_RCTN( )

3.12　BT_RINI( )

3.13　BT_RTXT( )

3.14　BT_SELECT( )

3.15　BT_SETDIAL( )

3.16　BT_WCTN( )

3.17　BT_WDSC( )

3.18　BT_WEOT( )

3.19　BT_WINI( )

3.20　BT_WRST( )

3.21　BT_WTTD( )

3.22　BT_WTXT( )

3.23　インタフェース構造体の記述方法

3.24　DCT

3.25　IDLST

3.26　LCB

3.27　ライブラリ関数とインタフェース構造体の関係

3.1　アプリケーションプログラムの作成手順

アプリケーションプログラムを作成・実行するときに使用する，ヘッダファイルおよびライブラリについて説明します。

＜この節の構成＞

(1)　ヘッダファイル

(2)　ライブラリ

(1)　ヘッダファイル

HSC-APIを使用するアプリケーションプログラムで取り込む必要のあるヘッダファイルを表3-1に示します。

表3-1　ヘッダファイル

ファイル名 | 記述形式 | 内容
bsc.h | # include <dlicom/bsc.h> | HSC-APIで使用する各種マクロ，および構造体の定義です。
errno.h | # include <errno.h> | グローバル変数errnoを参照するときに使用します。

(2)　ライブラリ

HSC-APIを使用するアプリケーションプログラムは，リンケージ実行時に，HSC-API用のライブラリ関数のオブジェクトモジュールを取り込む必要があります。このため，コンパイルとリンクのときには，表3-2に示すライブラリを指定する必要があります。

共用ライブラリを使用すると，HSC-APIのバージョンアップでライブラリが変更されても，アプリケーションプログラムを再リンケージする必要がなくなります。

HSC-APIが提供するライブラリファイルを表3-2に，HSC-APIライブラリファイルとのリンクを表3-3に示します。

表3-2　HSC-APIが提供するライブラリファイル

項番 | ライブラリ種別 | 説明
1 | 共用ライブラリ（/lib/libbsc.so） | ライブラリ関数は，実行時にアプリケーションプログラムと結合されます。

表3-3　HSC-APIライブラリファイルとのリンク

項番 | リンク対象ライブラリ種別 | リンク方法
1 | 共用ライブラリ（/lib/libbsc.so） | xlc ファイル名 -brtl -lbsc

注

コンパイルオプションの詳細については，各種コンパイラのマニュアルを参照してください。

3.2　ライブラリ関数の記述方法

次節以降でライブラリ関数を説明しています。各ライブラリ関数の記述方法を次の形式で説明します。

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

ライブラリ関数の名称と，機能の概要について説明しています。

(2)　形式

ライブラリ関数の使用方法をコーディングレベルで記述しています。

(3)　機能

ライブラリ関数の詳細な機能，および引数を説明しています。また，構造体を設定・参照する必要がある場合は，その形式および内容を説明しています。

(4)　リターン情報

(a)　リターン値

HSC-APIが，ライブラリ関数の実行結果を報告するためにアプリケーションプログラムに対して返す値を説明しています。

一般的に，0または正の値は関数が正しく終了したことを意味し，-1は関数が異常終了したことを意味します。

(b)　詳細エラー情報

ライブラリ関数が異常終了した場合に，グローバル変数errnoにセットされるエラーコードの詳細情報を説明しています。

(c)　LCBリターン情報

LCBを引数に持つライブラリ関数が完了した場合に，終了コードと異常終了時のエラー詳細コードがLCBリターン情報に設定されます。ただし非同期方式の場合は，LCBリターン情報に結果は設定されないので，BT_CHECK関数などで結果を確認してください。

LCBリターン情報の詳細については，「3.26　LCB」を参照してください。

(5)　特記事項

ライブラリ関数を使用する際の特記事項および注意事項について説明しています。

3.3　BT_CANL( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_CANL( )

受信要求を，キャンセルします。

(2)　形式

#include <dlicom/bsc.h>
int  BT_CANL(fd);
int  fd;

(3)　機能

受信要求による受信待ち状態をキャンセルします。受信要求を取り消して送信要求に切り替えるときに使います。

BT_CANL関数は，BT_RINI関数，またはBT_RTXT関数の待ち状態で発行すると，待ち状態をキャンセルして，回線オープンの状態に戻します。そのほかの状態で発行した場合は無視されます。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

(4)　リターン情報

(a)　リターン値

0：正常終了

-1：異常終了

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | 同じ回線に対して，すでにキャンセル処理中です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(5)　特記事項

同期方式のBT_RINI関数またはBT_RTXT関数をキャンセルする場合は，BT_RINI関数またはBT_RTXT関数を発行したプロセスの子プロセスから，BT_CANL関数を発行してください。

非同期方式のBT_RINI関数またはBT_RTXT関数をキャンセルする場合は，BT_RINI関数またはBT_RTXT関数を発行したプロセスから，BT_CANL関数を発行できます。
BT_CANL関数を発行した場合でも，非同期方式のBT_RINI関数またはBT_RTXT関数の結果をBT_CHECK関数で取り込む必要があります。BT_CHECK関数でのLCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

BT_CANL関数を発行したときに，すでにBT_RINI関数またはBT_RTXT関数が完了している場合，キャンセルは失敗し，BT_RINI関数またはBT_RTXT関数は正常に完了します。この場合，BT_CANL関数は正常終了します。BT_RINI関数またはBT_RTXT関数のリターン値によって，結果を判断する必要があります。

3.4　BT_CHECK( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_CHECK( )

完了した非同期方式の関数の結果を取り込みます。

(2)　形式

#include <dlicom/bsc.h>
int  BT_CHECK(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

BT_SELECT関数で完了確認した回線識別子（ファイル識別子）に対する非同期方式の関数の，完了結果を取り込みます。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。通信管理は，このLCBテーブルに完了結果を設定します。

(4)　リターン情報

(a)　リターン値

0：要求を受け付けて，結果をLCBリターン情報に設定しました。

-1：要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBADF | 9 | 完了している非同期事象がありません。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

(5)　特記事項

LCBテーブルの内容は，先に発行した非同期方式の関数で指定した内容をそのまま保持しておく必要があります。非同期方式の関数を発行してから，BT_CHECK関数を発行するまでの間，LCBテーブルの内容を変更しないでください。

3.5　BT_CLOSE( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_CLOSE( )

ドライバをクローズします。

(2)　形式

#include <dlicom/bsc.h>
int  BT_CLOSE(fd);
int  fd;

(3)　機能

通信管理に対して最後に発行する関数であり，ドライバのクローズを行います。

ドライバのクローズとは，HSC-APと回線を管理している通信管理との間の通信路を解放し，オープンしたUNIXファイルをクローズすることです。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

(4)　リターン情報

(a)　リターン値

0：正常終了

-1：異常終了

(b)　詳細エラー情報

名称 | 値 | 要因
EBUSY | 16 | 指定された回線は，すでにクローズ実行中です。
上記以外 | AIXマニュアルのcloseシステムコールを参照してください。

(5)　特記事項

通信途中（EOTまたはDLE・EOTを送受信していない状態）で強制クローズしたい場合は，完了待ちの非同期要求をBT_CHECK関数で取り込まなくても，BT_CLOSE関数を発行できます。この場合，完了待ちの要求の完了はHSC-APに通知されません。また，通信相手にも通知されません。BT_CLOSE関数が完了した時点でオープンしていたパス（回線）はクローズされます。

また，BT_LCLS関数による強制クローズはできません。

3.6　BT_IDLT( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_IDLT( )

公衆回線情報を設定します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_IDLT(fd,idlstp);
int  fd;
struct  idlst  *idlstp;

(3)　機能

使用する回線が公衆回線の場合，公衆回線の情報を設定します。BT_IDLT関数は，公衆回線時に属性設定（BT_MDFY関数）後に発行します。回線のオープン後に発行することはできません。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

idlstpには，IDLSTテーブルへのポインタを指定します。IDLSTの設定は，「3.25　IDLST」を参照してください。

(4)　リターン情報

(a)　リターン値

0：正常終了

-1：異常終了

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，idlstpのアドレス不正，IDLSTテーブルの内容不正，または指定された回線が公衆回線（HSC2手順の回線）ではありません。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

3.7　BT_LCLS( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_LCLS( )

回線をクローズします。

(2)　形式

#include <d1icom/bsc.h>
int  BT_LCLS(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

オープンした回線をクローズします。BT_LCLS関数を発行する前に，通信相手に終了を通知（BT_WRST関数またはBT_WDSC関数を発行）する必要があります。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.8　BT_LOPN( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_LOPN( )

回線をオープンします。

(2)　形式

#include <dlicom/bsc.h>
int  BT_LOPN(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

回線を初期化し回線をオープンします。回線のオープンとは，HSC1手順の回線では相手HSC-APとの通信ができる状態です。HSC2手順の回線では，相手局との接続のための発信，または着信ができる状態です。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

- 1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.9　BT_MDFY( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_MDFY( )

回線の属性を設定します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_MDFY(fd,dctp);
int  fd;
struct  dct  *dctp;

(3)　機能

使用する回線の属性を設定します。BT_MDFY関数は，ドライバのオープン（BT_OPEN関数）直後に発行します。回線のオープン後に再度BT_MDFY関数を発行して，属性を変更することもできます。ただし属性の変更ができる内容には制限があります。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

dctpには，DCTテーブルへのポインタを指定します。DCTの設定は，「3.24　DCT」を参照してください。

(4)　リターン情報

(a)　リターン値

0：正常終了

-1：異常終了

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，dctpのアドレス不正，またはDCTテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(5)　特記事項

回線のオープン後に，BT_MDFY関数を発行して属性を変更する場合の注意事項を次に示します。

DCTテーブルのプロトコルエリアは変更できません。

タイマ値の変更はできません。

属性の変更を行った場合は，BT_MDFY関数の正常終了直後から変更されます。

3.10　BT_OPEN( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_OPEN( )

ドライバをオープンします。

(2)　形式

#include <dlicom/bsc.h>
int  BT_OPEN(path);
char  *path;

(3)　機能

通信管理に対して最初に発行する関数であり，ドライバのオープンを行います。

ドライバのオープンとは，利用する回線を識別するUNIXファイルをオープンして，HSC-APと回線を管理している通信管理との間の通信路を確立することです。

pathには，利用する回線名称（basicline文のnameオペランドで指定した名称）を指定します。

回線を識別するための番号を回線識別子といい，ドライバをオープンしたときにリターン値として返されるファイル記述子がこれに当たります。HSC-APは，この回線識別子を指定してライブラリ関数を発行することで，回線を識別できます。

また，ドライバのオープンは回線単位に発行し，複数の回線を利用する場合，各回線に対応するpathで複数のドライバのオープンが必要です。

(4)　リターン情報

(a)　リターン値

0または正の整数：正常終了（ファイル記述子（回線識別子）を返します）

-1：異常終了

(b)　詳細エラー情報

名称 | 値 | 要因
ENOENT | 2 | パス名（回線名）が存在しません。
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | 指定されたpathは，オープン済みです。
ENODEV | 19 | xnfdeleteコマンドで該当する回線を削除しています。
上記以外 | AIXマニュアルのopenシステムコールを参照してください。

3.11　BT_RCTN( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_RCTN( )

相手局に応答を送信し，テキストを受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_RCTN(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局から受信したENQ，またはテキストの応答を相手局へ送信し，次のテキスト，EOTなどを受信します。

BT_RINI関数で受信したENQまたはID・ENQの肯定応答（ACK0またはWACK）を相手局に送信し，次のテキストまたはブロックを受信します。

前回のBT_RCTN関数で受信したテキストの応答（ACK，WACK，またはRVI）を相手局に送信し，次のテキスト，応答催促ENQ，またはEOTを受信します。

応答の種類は，LCBテーブルのコマンド（lb_comd）で指定します。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.12　BT_RINI( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_RINI( )

相手局からのENQを受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_RINI(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局からのデータリンク確立ENQ，またはID・ENQを受信します。また，公衆回線の場合，相手局からの着信も行います。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.13　BT_RTXT( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_RTXT( )

相手局からのENQ受信に対して肯定応答送信後，テキスト（またはブロック）受信の一連の動作を行います。

(2)　形式

#include <dlicom/bsc.h>
int  BT_RTXT(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局からのENQ受信に対して肯定応答（ACK0）を送信し，テキスト（またはブロック）を受信します（BT_RINI関数＋BT_RCTN関数の動作を行います）。

BT_RTXT関数で受信したテキスト（またはブロック）の応答はBT_RCTN関数で行い，次のブロックまたはEOTを受信します。

公衆回線の着信には利用できません。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報が，errnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.14　BT_SELECT( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_SELECT( )

非同期方式の関数の完了を監視します。

(2)　形式

#include <sys/types.h>
#include <sys/time.h>
#include <dlicom/bsc.h>
int  BT_SELECT(nfds,readfds,writefds,exceptfds,timeout);
int  nfds;
fd_set  *readfds,*writefds,*exceptfds;
struct  timeval  *timeout;

(3)　機能

非同期方式で要求したライブラリ関数の完了を監視します。

nfdsには，監視するファイル記述子セットの範囲を指定します。0からnfds-1までの記述子が調べられます。

readfdsには，監視するファイル記述子に対するビットをONにしたファイル記述子セット（8個のlong型）へのポインタを指定します。ファイル記述子=nで事象が発生しているかどうかを監視する場合は，2nビットをONにします。

nの最大値は256（=8×32）ですが，実際は一つのプロセスで同時にオープンできるファイル数の上限（OSの仕様）に制限されます。

writefdsとexceptfdsは予備です（0を設定してください）。

timeoutには，非同期事象が発生していないときに，sleepする時間を設定したtimeval構造体へのポインタを指定します。

struct  timeval {
     long  tv_sec;   /*  秒         */
     long  tv_usec;  /*  マイクロ秒 */
};

tv_secを0にすれば，sleepしないですぐリターンします。timeoutをNULLポインタにすれば，非同期事象が発生するまでsleepします。

詳細については，AIXマニュアルのselectシステムコールを参照してください。

(4)　リターン情報

(a)　リターン値

正の整数：

完了している非同期事象の数を返します。

完了したファイル記述子に対するビットをONにして，記述子セットを返します。

0：

完了している非同期事象はありません。

-1：

異常終了（詳細エラー情報がerrnoに設定されています）

(b)　詳細エラー情報

AIXマニュアルのselectシステムコールを参照してください。

(5)　特記事項

完了していた非同期事象に対しては，BT_CHECK関数を発行してその完了結果を取り込んでください。BT_CHECK関数を発行前に，同じファイル記述子（回線識別子）に対して，別の関数を発行すると拒否（errno = EBUSY）されます。
ただし，BT_CLOSE関数を発行した場合は，通信管理が保留している非同期事象は廃棄され，そのファイル記述子は解放されます。

BT_SELECTライブラリ関数を使用しないでselectシステムコールを使用することもできます。selectシステムコールの使用方法は，AIXマニュアルを参照してください。

3.15　BT_SETDIAL( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_SETDIAL( )

回線交換接続時，短縮ダイヤルの登録，閉域登録，または閉域登録の解除を行います。

(2)　形式

#include <dlicom/bsc.h>
int  BT_SETDIAL(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

回線交換接続時に，短縮ダイヤルの登録，閉域登録，または閉域登録の解除を行います。BT_SETDIAL関数は，回線オープン状態（BT_LOPN関数が正常終了後）で通信前（BT_RINI関数，BT_RTXT関数，BT_WINI用関数，またはBT_WTXT関数発行前）の状態のときに発行できます。

登録，解除での選択信号は，HSC-APがLCBテーブルに設定しておく必要があります。完了時のID信号は，通信管理がLCBテーブルに設定します。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.16　BT_WCTN( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_WCTN( )

相手局にテキストを送信し，応答を受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WCTN(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局にテキストまたはブロックを送信し，相手局からの応答を受信します。

肯定応答（ACK，RVI）受信時は，HSC-APにリターンします。

WACK，NAK，不正応答受信，またはタイムアウト時は，通信管理がリトライします（回線切断，回線障害時はリトライしません）。

BT_WTXT関数によるブロック送信後は，BT_WCTN関数で継続のブロックを送信します。最終ブロック送信時は，テキスト＋EOT指定によってテキスト送信を終結させるか，または最終ブロック送信後にBT_WRST関数でテキスト送信を終結させてください。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.17　BT_WDSC( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_WDSC( )

公衆回線接続時，相手局にDLE・EOTを送信して回線を切断します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WDSC(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

公衆回線接続時に，相手局にDLE・EOTを送信し，回線を切断します。また，相手局からID・ENQまたはID・ACK0で受けたIDが不正のために拒否または切断する場合にも使用します。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのloctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

(5)　特記事項

BT_WDSC関数で回線を切断した直後にBT_WINI関数で再発信すると，網からビジー（切断後処理中）で拒否（LCBリターン情報の終了コード：CC_CALE）されることがあります。この場合，時間（時間間隔は使用する網によって異なります）をおいて発信する必要があります。

3.18　BT_WEOT( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_WEOT( )

公衆回線接続時，相手局にEOTを送信して，相手局からEOTを受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WEOT(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

公衆回線接続時に，相手局にEOTを送信し，相手局からEOTまたはENQを受信（EOTのキャッチボール）します。

テキスト送信側は，テキスト送信終結時にBT_WRST関数でEOTを送信する代わりに，BT_WEOT関数を発行します。

テキスト受信側は，BT_RCTN関数でEOT受信したあと，BT_WEOT関数を発行します。

BT_WEOT関数に対して，キャッチボール終了のENQを受信した場合，BT_RCTN関数を発行してテキスト受信を待ちます。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

(5)　特記事項

EOTキャッチボールは，HSC-APで時間間隔を取って，BT_WEOT関数を実行する必要があります。

3.19　BT_WINI( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_WINI( )

相手局にENQを送信し，応答を受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WINI(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局にデータリンク確立ENQまたはID・ENQを送信し，応答を受信します。また，公衆回線の場合，相手局への発信も行います。

肯定応答（ACK0）受信時は，HSC-APにリターンします。

WACK，NAK，不正応答受信，またはタイムアウト時は，通信管理がリトライします（回線切断，回線障害時はリトライしません）。

コンテンション発生時，優先側は相手局からの応答を待ち，非優先側は異常終了します。非優先側のHSC-APは，BT_RINI関数を発行して受信に切り替えてください。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.20　BT_WRST( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_WRST( )

相手局にEOTを送信し，テキスト送信を終結させます。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WRST(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局にEOTを送信し，テキスト送信を終結させます。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.21　BT_WTTD( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(5)　特記事項

(1)　名称

BT_WTTD( )

相手局にテキスト送信一時延期を送信し，応答を受信します。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WTTD(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局にテキスト送信一時延期（TTD）を送信し，相手局からの応答を受信します。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報がerrnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

(5)　特記事項

TTDを連続送信するときの時間間隔は通信管理が決定します。HSC-APがBT_WTTD関数を発行してから2秒後にTTDを送信します。

3.22　BT_WTXT( )

＜この節の構成＞

(1)　名称

(2)　形式

(3)　機能

(4)　リターン情報

(1)　名称

BT_WTXT( )

相手局にENQ，テキスト（1ブロックだけ）送信，およびEOT送信の一連の送信動作を行います。

(2)　形式

#include <dlicom/bsc.h>
int  BT_WTXT(fd,lcbp);
int  fd;
struct  lcb  *lcbp;

(3)　機能

相手局にENQ送信後のテキスト送信（または1ブロック）の一連の送信動作を行います。相手局にENQ送信後，相手局から肯定応答（ACK0）受信時，テキスト（またはブロック）の送信を行います（BT_WINI関数＋BT_WCTN関数の動作を行います）。

送信テキストが単一ブロックの場合，ETXテキストおよびEOT送信指示があるときは，EOTを送信してテキスト送信を完了させます。

送信テキストが複数ブロックの場合，ETBブロックを送信し，相手局からの応答を受信します。継続のブロックはBT_WCTN関数によって送信します。

公衆回線の発信には利用できません。

ENQ送信に対して，WACK受信時，NAK受信時，不正応答受信時，およびタイムアウト時は，通信管理が規定回数ENQをリトライします（回線切断，回線障害時はリトライしません）。

コンテンション発生時，優先側は相手局からの応答を待ち，非優先側は異常終了します。非優先側のHSC-APは，BT_RINI関数を発行して受信に切り替えてください。

テキスト（またはブロック）に対して，WACK受信時，NAK受信時，不正応答受信時，およびタイムアウト時は，通信管理が規定回数テキストまたはENQによってリトライします。

fdには，ドライバをオープンしたときにリターン値として返される回線識別子を指定します。

lcbpには，LCBテーブルへのポインタを指定します。LCBの設定は，「3.26　LCB」および「3.27　ライブラリ関数とインタフェース構造体の関係」を参照してください。

(4)　リターン情報

(a)　リターン値

0：

要求を受け付けて，同期方式の場合，結果をLCBリターン情報に設定しました。非同期方式の場合，LCBリターン情報に結果は設定されていません。

-1：

要求を拒否しました。詳細エラー情報が，errnoに設定されています。

(b)　詳細エラー情報

名称 | 値 | 要因
ENXIO | 6 | 通信管理が開始していません。
EBUSY | 16 | ほかのライブラリ関数が実行中です。
EINVAL | 22 | パラメタ不正，lcbpのアドレス不正，またはLCBテーブルの内容不正です。
上記以外 | AIXマニュアルのioctlシステムコールを参照してください。

(c)　LCBリターン情報

LCBリターン情報については，「3.26　LCB」を参照してください。

3.23　インタフェース構造体の記述方法

次節以降でインタフェース構造体（テーブル）を説明しています。各インタフェース構造体（テーブル）の記述方法を次の形式で説明します。

＜この節の構成＞

(1)　形式

(2)　説明

(3)　注意事項

(1)　形式

提供ヘッダ内の構造体を記述しています。

(2)　説明

提供ヘッダ内の構造体の内容，および説明を記述しています。

(3)　注意事項

使用上の注意事項について説明しています。

3.24　DCT

＜この節の構成＞

(1)　形式

(2)　説明

(3)　注意事項

(1)　形式

struct dct  {
   unsigned  short  dt_mode;     /* モード */
   unsigned  short  dt_modex;    /* 予備 */
   struct  tlist   *dt_timl;     /* タイマテーブルポインタ */
   struct  rlist   *dt_rtyl;     /* リトライテーブルポインタ */
};

(2)　説明

(a)　モード（dt_mode）

各ビット単位に表3-4に示す意味を持ち，表3-4に示すマスク名で参照，更新します。

表3-4に示すビット以外は値に0を設定してください。

表3-4　モードとパラメタ

項目 | マスク名 | 値 | 意味
プロトコル種別※1 | MHSC1 | 0x8000 | HSC1手順を使用します。
MHSC2 | 0x4000 | HSC2手順を使用します。
コンテンション優先種別 | MPRI_P | 0x0010 | コンテンション発生時の優先局です。
MPRI_S | 0x0000 | コンテンション発生時の非優先局です。
WACK自動送信機能の使用の有無※2 | MWAK_EN | 0x0000 | WACK自動送信機能を使用します。
MWAK_DS | 0x0080 | WACK自動送信機能を使用しません。
TTD自動送信機能の使用の有無※3 | MTTD_EN | 0x0000 | TTD自動送信機能を使用します。
MTTD_DS | 0x0040 | TTD自動送信機能を使用しません。

注※1

使用する手順（HSC1手順/HSC2手順）を選択します。構成定義文の指定と一致させる必要があります。一致しない場合，BT_MDFY関数は異常終了（errno=EINVAL）します。

注※2

通信管理が自動的に，WACK（一時受信抑止）送信を行うかどうかを指定します。

使用を選択すると，HSC-APからBT_RCTN関数が2秒間発行されない場合，通信管理が自動的にWACKを送信します。

注※3

通信管理が自動的に，TTD（一時送信延期）送信を行うかどうかを指定します。

使用を選択すると，HSC_APからBT_WCTN関数が2秒間発行されない場合，通信管理が自動的にTTDを送信します。

(b)　タイマテーブルポインタ（dt_timl）

タイマテーブルへのポインタを設定します。このポインタがNULLの場合，構成定義文で指定した値を使用します。構成定義文でも省略した場合，標準値を使用します。

このタイマテーブルと構成定義文で指定した値が異なる場合，タイマテーブルの値を優先します。

＜タイマテーブル形式＞

struct  tlist  {
 short  tl_rsp;      /* 受信監視時間 */
};

tl_rsp：受信監視時間（0.0～102.0（秒））

構成定義文（basicline文のresponse_timeオペランド）で指定した受信監視タイマ値を変更します。

時間は0.4×nで表現した場合のn（0～255）を指定してください。0を指定した場合，時間監視を行いません。

相手局と監視時間値を変える必要があります。相手局と同じ値を指定すると，コンテンションの発生時に，ENQが衝突すると回復できない場合があります。非優先側の時間を優先側より大きくしてください。

構成定義文での標準値は3.2秒です。

このタイマは，次に示す場合に使用します。

データリンク確立の応答監視時間

テキスト送信の応答監視時間

テキスト受信の監視時間

(c)　リトライテーブルポインタ（dt_rtyl）

リトライテーブルへのポインタを設定します。このポインタがNULLの場合，構成定義文で指定された値を使用します。構成定義文でも省略した場合，標準値を設定します。このリトライテーブルと構成定義文の値が異なる場合，リトライテーブルの値を優先します。

＜リトライテーブル形式＞

struct rlist  {
   short  rl_ENQ;    /* 起動時のリトライ回数 */
   short  rl_txt;    /* テキストのリトライ回数 */
   short  rl_EWK;    /* 起動時のWACKリトライ回数 */
   short  rl_tWK;    /* テキスト送信に対するWACK受信リトライ回数 */
   short  rl_TTD;    /* TTD（含むABORT）受信リトライ回数 */
};

rl_ENQ：データリンク確立失敗時のENQのリトライ回数（0～255）

構成定義文（basicline文のENQ_retryオペランド）で指定した値を変更します。構成定義文での標準値は7回です。255を指定した場合は，無限回リトライします。

rl_txt：テキスト送受信のリトライ回数（0～255）

構成定義文（basicline文のtext_retryオペランド）で指定した値を変更します。構成定義文での標準値は7回です。255を指定した場合は，無限回リトライします。次に示す場合に使用します。

テキスト送信に対してNAK受信

テキスト送信に対して無応答

データチェック発生時のNAK送信

応答催促ENQ受信

テキスト待ちタイムアウト

テキスト待ち時不正データ受信

交互性不正のACK受信

rl_EWK：データリンク確立時のWACK受信のENQリトライ回数（0～255）

構成定義文（basicline文のENQ_WACK_retryオペランド）で指定した値を変更します。構成定義文での標準値は15回です。255を指定した場合は，無限回リトライします。

rl_tWK：テキスト送信に対するWACK受信ENQリトライ回数（0～255）

構成定義文（basicline文のtext_WACK_retryオペランド）で指定した値を変更します。構成定義文での標準値15回です。255を指定した場合は，無限回リトライします。

rl_TTD：TTD（ABORT含む）受信時NAKリトライ回数（0～255）

構成定義文（basicline文のTTD_retryオペランド）で指定した値を変更します。構成定義文での標準値は15回です。255を指定した場合は，無限回リトライします。

(3)　注意事項

変更したタイマ値，およびリトライ回数は，BT_CLOSE関数でドライバをクローズしたあとは引き継がれません。BT_OPEN関数で再びドライバをオープンしたときは，構成定義文の値に戻ります。

3.25　IDLST

＜この節の構成＞

(1)　形式

(2)　説明

(1)　形式

struct  idlst  {
   unsigned  short  il_mode;       /* 未使用 */
   short            il_nosiz;      /* 電話番号長 */
   unsigned   char *il_pnno;       /* 電話番号バッファポインタ */
   short            il_idsiz;      /* ターミナルID長 */
   unsigned   char *il_tmid;       /* ターミナルIDバッファポインタ */
   short            il_caltone;    /* コーリングトーン時間 */
   short            il_anstone;    /* アンサートーン時間 */
};

(2)　説明

(a)　電話番号長（il_nosiz）

呼び出し先電話番号（100けた以内）の長さを指定します。着信専用で使う場合，0を指定してください。0を指定したのに，BT_WINI関数で発信した場合，BT_WINI関数をLCBの終了コード（CC_SEQE）で拒否します。

(b)　電話番号バッファポインタ（il_pnno）

呼び出し先電話番号を格納したバッファのポインタを指定します。電話番号は，バッファ内にV25bis，X.21共に，JIS8コードで設定します。回線交換網の短縮ダイヤル，またはペア型の閉域接続で呼び出す場合，短縮ダイヤル番号を指定します。

ダイヤル番号形式を表3-5に示します。

表3-5　ダイヤル番号形式

種類 | ダイヤル番号形式 | 備考
V.25bis | xxxxxxxxxx | CRNコマンドに指定する番号です。
X.21 | 通常発信 | xxxxxxx+ | なし
短縮ダイヤル発信 | .△△+ | △△は，BT_SETDIAL関数で網に登録する番号です。
ペア型閉域発信

注1

ISDNでサブアドレス付きの発信の場合，上記のxxxxxxを，xxxxxx*ssssと指定します。ssssがサブアドレスです。X.21の場合，最後に+が必要です。

注2

実際のけた数は網の仕様によって異なります。

(c)　ターミナルID長（il_idsiz）

自ID長（15バイト以内）を指定します。IDを送信しない場合，0を指定してください。

(d)　ターミナルIDバッファポインタ（il_tmid）

自IDを格納するバッファのポインタを指定します。指定されたIDはそのままID・ENQ（またはID・ACK0）で相手に送信します。通信相手からの受信IDは，通信管理がLCBテーブルに設定してHSC-APに渡します。この受信IDは，通信管理ではチェックしません。HSC-APでチェックしてください。

(e)　コーリングトーン時間（il_caltone）

発信時の呼び出しトーン時間を，0～204秒の範囲で指定します。0を指定した場合はトーンを送信しません。指定された秒数は，0.8の倍数に切り上げます。

(f)　アンサートーン時間（il_anstone）

着信時のアンサートーン時間を，0～204秒の範関で指定します。0を指定した場合，トーンは送信しません。指定された秒数は，0.8の倍数に切り上げます。

3.26　LCB

＜この節の構成＞

(1)　形式

(2)　説明

(1)　形式

struct  lcb  {
   unsigned short  lb_comd;    /* コマンド */
   unsigned short  lb_comdx;   /* コマンド拡張部 */
   short           lb_ccod;    /* 終了コード */
   short           lb_errc;    /* エラー詳細コード */
   short           lb_xnfst;   /* 通信管理状態コード */
   unsigned short  lb_rsts;    /* 受信ステータス */
   short           lb_rsiz;    /* 受信バッファサイズ */
   short           lb_ssiz;    /* 送信データサイズ */
   unsigned char  *lb_rbuf;    /* 受信バッファポインタ */
   unsigned char  *lb_sbuf;    /* 送信バッファポインタ */
   short           lb_setsiz;  /* 回線交換 選択信号サイズ */
   short           lb_idsiz;   /* 回線交換 ID信号受信バッファサイズ */
   unsigned char  *lb_setdl;   /* 回線交換 選択信号バッファポインタ */
   unsigned char  *lb_id;      /* 回線交換 ID信号受信バッファポインタ */
   short           lb_tmidsz;  /* ターミナルID受信バッファサイズ */
   unsigned char  *lb_tmid;    /* ターミナルID受信バッファポインタ */
};

(2)　説明

(a)　コマンド（lb_comd）

各ビット単位に意味を持ち，表3-6に示すマスク名で設定します。

表3-6　コマンド一覧と内容

項目
マスク名
値
意味
指定できる関数

送信テキストに対する指示
透過/非透過モードの指定
CTXT_NP
0x0000
非透過モード
BT_WCTN( )
BT_WTXT( )

CTXT_PM
0x4000
透過モード

ヘッダの有無の指定
CTXT_SX
0x0000
ヘッダなし（STXで始まる）

CTXT_SH
0x2000
ヘッダあり（SOHで始まる）

ETB分割の指定
CTXT_EB
0x0000
ETBで終わる

CTXT_EX
0x1000
ETXで終わる

BT_WRST関数省略指定
CLG_RST
0x0020
テキスト送信後応答受信し，EOT送信

受信テキストに対する応答の指示
CLG_ACK
0x0000
ACK0またはACK1を応答後テキストまたはEOT受信待ち
BT_RCTN( )

CLG_WAK
0x0001
WACKを応答後ENQ受信待ち※

CLG_RVI
0x0004
RVIを応答後EOTまたはテキスト受信待ち

注※

WACKを連続送信するときの時間間隔は，HSC-APがBT_RCTN関数を発行してから2秒後にWACKを送信します。

(b)　コマンド拡張部（lb_comdx）

各ビット単位に意味を持ち，表3-7に示すマスク名で設定します。

表3-7　コマンド拡張部の内容

項目 | マスク名 | 値 | 意味 | 指定できるライブラリ関数
要求に対する完了報告の方法の指定 | CMD_SYN | 0x0000 | 同期型要求 | LCBを指定する全ライブラリ関数
CMD_ASYN | 0x4000 | 非同期型要求

(c)　終了コード（lb_ccod）

LCBを引数に持つライブラリ関数がリターン値0で完了したとき，通信管理はこのエリアに終了コードを設定します。終了コードの内容を表3-8に示します。

表3-8　終了コードの内容

マクロ名
値
意味

CC_NORL
0
正常終了

CC_EXCP
1
例外事項の発生
状態は例外事項発生時のままとなっているため，HSC-APはエラー詳細コードによってライブラリ関数を発行してください。

CC_LINE
2
回線上のHSC手順エラー
通信管理が手順の回復のために再試行しましたが，リトライアウトして回復しませんでした。
BT_MDFY関数を発行して設定した値または構成定義の設定値で監視します。
回線は，オンラインのままです。
HSC手順上の状態は，切断していないためリトライアウトしたままとなっています。HSC-APはエラー詳細コードによってライブラリ関数を発行してください。

CC_FATL
3
回線障害，またはオフライン
回線はクローズ状態となっているため，障害原因を取り除くなどして，回線がオンライン状態になるまで，通信できません。
障害原因を取り除いたのち，HSC-APは回線オープン，またはドライバオープンからし直してください。特に，回線障害後，停止できないHSC-APは定期的に回線オープンを再試行して，障害原因が取り除かれるのを監視する必要があります。

CC_CALE
4
発信失敗
回線はオンライン状態のままです。
HSC-APは，エラー詳細コードに示す失敗原因に従って，時間をおいて再発信するか，または電話番号を見直してください。
なお，回線障害による発信失敗はCC_FATLが設定されます。

CC_SEQE
5
シーケンスエラー発生
ライブラリ関数の発行順序不正です。HSC-APを見直してください。

(d)　エラー詳細コード（lb_errc）

終了コードが0以外のとき，通信管理は表3-9に示すエラー詳細コードを設定します。

表3-9　エラー詳細コード一覧

マクロ名
値
意味
対応する終了コード

EC_EOTR
10
EOT受信
CC_EXCP

EC_DSCR
11
DLE・EOT受信（公衆回線切断）

EC_RVIR
12
RVI受信

EC_CONT
13
コンテンション発生（非優先側）
HSC-APはBT_RINI関数，またはBT_RTXT関数を発行します。優先側はエラーになりません。

EC_CANL
14
BT_CANL関数でキャンセルされた

EC_EOTENQ
15
EOTキャッチボール終了のENQ受信（BT_WEOT関数だけ）

EC_IDRJ
16
HSC2起動ENQ（ID・ENQまたはENQ）がID・NAK（またはNAK）で拒否された
ID拒否とし，通信管理ではリトライしません。発信は成功したので回線は接続状態です。

EC_WAKR
20
WACK受信リトライアウト
CC_LINE

EC_NAKR
21
NAK受信リトライアウト

EC_DTCK
22
データチェックリトライアウト
X21インタフェースのID信号受信時は一回のデータチェックでエラーとなります。

EC_TOUT
24
応答待ちタイムアウト，またはデータリンク確立後のテキスト待ちタイムアウトのリトライアウト

EC_DTER
25
不正データ受信リトライアウト（ENQ待ちでテキスト受信など予期せぬ事象）

EC_ACKE
26
ACK0/1交互性エラーリトライアウト

EC_ENQR
27
応答催促ENQ受信リトライアウト（WACK送信後のENQ受信は除く）

EC_TTDR
28
TTD受信リトライアウト

EC_RVIE
29
RVIの二重受信

EC_ROVR
31
受信データ長（または受信ID長）が，HSC-AP受信バッファサイズを超えた

EC_V25B_CB
40
V25bisのCRN（発信）コマンドに対して，CFI（発信失敗応答）受信
CFIのパラメタが，右記に示す条件に該当します。
ローカルDCBビジー（CB）
CC_CALE（V25bis）

EC_V25B_AB
41
アボートコール（AB）
相手局無応答，呼び出し音なし

EC_V25B_RT
42
リングトーン（RT）
相手局無応答，呼び出し音あり

EC_V25B_ET
43
エンゲージトーン（ET）
相手局が通信中

EC_V25B_NT
44
応答トーン未検出（NT）

EC_V25B_CFE
45
未定義パラメタ，パリティエラー

EC_V25B_DLC
46
V25bisのCRN（発信）コマンドに対して，DLC（遅延呼応答）受信

EC_V25B_INV
47
V25bisのCRN（発信）コマンドに対してINV（コマンド無効通知）受信

EC_V25B_ERR
48
V25bisのCRN（発信）コマンドに対して，未定義の応答受信

EC_V25B_PER
49
V25bisのCRN（発信）コマンドに対しての応答がパリティエラーまたはオーバーラン

EC_V25B_TOUT
63
V25bisの発信後の接続完了待ちタイムアウト

EC_X21_C21
50
X.21の発信に対するコールプログレス信号が右記に示す条件に該当
相手端末ビジー（コード21）
CC_CALE（X.21）

EC_X21_C22
51
選択信号手順誤り（コード22）

EC_X21_C23
52
選択信号伝送誤り（コード23）

EC_X21_C41
53
接続規制（コード41）

EC_X21_C42
54
番号変更（コード42）

EC_X21_C43
55
欠番（コード43）

EC_X21_C45
56
着信拒否（コード45）

EC_X21_C46
57
接続不可（コード46）

EC_X21_C48
58
無効呼（コード48）

EC_X21_C61
59
中継線ビジー（コード61）

EC_X21_C71
60
網ふくそう（コード71）

EC_X21_CER
61
上記以外の不正コードを受信

EC_X21_TOUT
62
X.21の発信に対して通信可待ちタイムアウト

EC_OFFL
80
回線はオフライン状態またはクローズ状態である※

xnfofflineコマンドまたはハード障害（回線アダプタの障害）でオフライン状態になっている

通信管理開始時のオンライン処理が完了していない

HSC-APがBT_LOPN関数を発行していないので，回線クローズ状態である

BT_RTXT関数，BT_WTXT関数以外で発 生
CC_FATL

EC_OFFLS
82
BT_RTXT関数，またはBT_WTXT関数のENQ送信時発生

EC_OFFLT
83
BT_RTXT関数のテキスト受信，またはBT_WTXT関数のテキスト送信時発生

EC_OFFLE
84
BT_WTXT関数のEOT送信時発生

EC_HERR
81
回線の障害が発生した
障害の内容は，通信管理がログファイルに出力します。
BT_RTXT関数，BT_WTXT関数以外で発 生

EC_HERRS
85
BT_RTXT関数，またはBT_WTXT関数のENQ送信時発生

EC_HERRT
86
BT_RTXT関数のテキスト受信，またはBT_WTXT関数のテキスト送信時発生

EC_HERRE
87
BT_WTXT関数のEOT送信時発生

注※

この時点でオンライン状態に回復している場合もあります。その場合でも，一度オフラインになったことをHSC-APに通知するため，このエラーで返します。

(e)　通信管理状態コード（lb_xnfst）

終了コード（lb_ccod）が，CC_EXCP，CC-LINE，CC_FATL，またはCC_CALEで完了した場合，通信管理の状態を返します。HSC-APは，状態をリセットしたい場合，この状態コードを見てどのライブラリ関数から発行すればよいかを判断できます。

通信管理状態コードを表3-10に，通信管理状態コードとライブラリ関数の関係を図3-1に示します。

表3-10　通信管理状態コード

マクロ名
値
通信管理の状態※

XNF_LCLS
1
回線クローズ状態

XNF_LDSC
2
回線オープン状態
回線切断状態（HSC2だけ）

XNF_DDSC
3
回線接続状態
データリンク未確立状態

＜リセット手順＞

HSC2手順では，BT_WDSC関数を発行し回線切断します。

XNF_DCON
4
データリンク確立状態

＜リセット手順＞

HSC1手順では，BT_WRST関数を発行してデータリンクを解放します。

HSC2手順では，BT_WDSC関数を発行して回線を切断します。

注※

回線対応の状態です。

図3-1　通信管理状態コードとライブラリ関数の関係

(f)　受信ステータス（lb_rsts）

受信テキストに関する情報を通信管理が設定します。各ビット単位に意味を持ち，表3-11に示す名称で参照します。

表3-11　受信テキスト情報

マクロ名 | 値 | 意味
RTXT_PM | 0x0004 | 受信したテキストは透過モード（ビットオフ時は，非透過モード）
RTXT_SH | 0x0002 | 受信したテキストはSOHで始まる（ビットオフ時は，STXで始まる）
RTXT_EX | 0x0001 | 受信したテキストはETXで終わる（ビットオフ時は，ETBで終わる）

(g)　受信バッファサイズ（lb_rsiz）

HSC-APの受信用バッファのバイト長を設定します。1～8,158バイト（ただし，透過モード時は，1～8,156バイト）が指定できます。

受信データ長が指定された受信バッファサイズを超えた場合，超えた分を切り捨てて渡し，ライブラリ関数はエラーリターンします。受信後は，受信したデータのバイト長が設定されます。

(h)　送信データサイズ（lb_ssiz）

HSC-APからの送信データのバイト長を設定します。0～8,158バイト（ただし，透過モード時は，0～8,156バイト）が指定できます。

(i)　受信バッファポインタ（lb_rbuf）

HSC-APの受信用バッファポインタを設定します。

(j)　送信バッファポインタ（lb_sbuf）

HSC-APの送信用バッファポインタを設定します。

(k)　回線交換選択信号サイズ（lb_setsiz）

BT_SETDIAL関数で，回線交換の短縮ダイヤル登録，閉域登録，または閉域解除をするときの，選択信号の長さを100けた以内で指定します。BT_SETDIAL関数以外の関数で指定した場合，無視します。BT_WINI関数で発信するときの選択信号（ダイヤル番号）は，IDLSTテーブルで指定します。

(l)　回線交換ID信号受信用バッファサイズ（lb_idsiz）

回線交換の場合，ID信号受信用バッファの長さを指定します。受信しなくてもよい場合，0を指定します。受信ID長が指定された受信バッファサイズを超えた場合，超えた分を切り捨てて渡し，関数はエラーリターンします。受信後は，受信したID信号の長さが設定されます。

(m)　回線交換選択信号バッファポインタ（lb_setdl）

BT_SETDIAL関数で，回線交換の短縮ダイヤル登録，閉域登録，または閉域解除をするときの，選択信号をセットしたバッファのポインタを指定します。選択信号は，表3-12に示す形式（コードはJIS8）で設定します。

表3-12　回線交換選択信号の形式

種類 | 信号形式
短縮ダイヤル登録 | 131/△△/xxxxxxx-+
閉域登録（ペア型） | 133/2/△△/xxxxxxx-+
閉域登録（グループ型） | 132/2/xxxxxxx-+
閉域解除（ペア型） | 133/9/△△-+
閉域解除（グループ型） | 132/9/xxxxxxx-+

（凡例）

△△：短縮番号，または閉域番号

xxxxxxx：相手加入者番号

(n)　回線交換ID信号受信用バッファポインタ（lb_id）

回線交換でID信号受信用のバッファポインタを指定します。通信管理が受信したID信号を表3-13に示す形式（コードはJIS8）で設定します。

表3-13　受信ID信号の形式

種類 | 信号形式
発着信時 | *xxxxxxx+（ペア型閉域の場合*△△+）
短縮ダイヤル登録完了時 | *xxxxxxx+
閉域登録（ペア型）完了時 | *xxxxxxx+
閉域登録（グループ型）完了時 | *xxxxxxx+
閉域解除（ペア型）完了時 | *△△+
閉域解除（グループ型）完了時 | *xxxxxxx+
ISDNのサブアドレス付きの場合 | *xxxxxxx+* ssss+

（凡例）

△△：閉域番号

xxxxxxx：相手加入者番号

ssss：サブアドレス

注

通信管理は，網から受信したID信号の内容はチェックしません。

(o)　ターミナルID受信用バッファサイズ（lb_tmidsz）

ターミナルID受信用バッファの長さを指定します。受信しなくてもよい場合，0を指定します。受信ID長が指定された受信バッファサイズを超えた場合，超えた分を切り捨てて渡し，関数はエラーリターンします。受信後は，受信したターミナルIDの長さが設定されます。

(p)　ターミナルID受信用バッファポインタ（lb_tmid）

ターミナルID受信用バッファポインタを指定します。

3.27　ライブラリ関数とインタフェース構造体の関係

ライブラリ関数とインタフェース構造体（テーブル）の関係を表3-14に示します。

表3-14　ライブラリ関数とインタフェース構造体（テーブル）の関係

（凡例）

○：通信管理が設定します。

●：HSC-APが設定します。

付録

＜この付録の構成＞

付録A　用語解説

付録B　データ形式

付録C　シーケンス例

付録D　従来製品との差異

付録A　用語解説

（英字）

HSC-AP

HSC-APIを使用してデータ転送などの通信を行うアプリケーションプログラムです。

HSC-API

HSC1手順またはHSC2手順で通信するために，ライブラリ関数として提供されているAPIです。

selectシステムコール

UNIXのシステムコールです。ライブラリ関数を非同期方式で実行した場合に，通信管理側の処理の完了を監視するために使用します。

（カ行）

回線識別子

回線を識別するための番号で，ドライバをオープンしたときにリターン値として返されるファイル記述子のことです。

（タ行）

同期方式

ライブラリ関数の処理方式の一つです。ライブラリ関数を呼び出したあと，通信管理側の処理がすべて完了した時点でアプリケーションプログラムに制御が戻ります。

（ハ行）

非同期方式

ライブラリ関数の処理方式の一つです。ライブラリ関数を呼び出したあと，通信管理側の処理が完了しているかどうかに関係なく，すぐにアプリケーションプログラムに制御が戻ります。

付録B　データ形式

HSC-APIでHSC-APから通信管理にもらうデータの形式，逆に通信管理からHSC-APに通知するデータの形式を示します。

＜この節の構成＞

付録B.1　HSC-AP→通信管理

付録B.2　通信管理→HSC-AP

付録B.3　コード体系

付録B.1　HSC-AP→通信管理

テキストの先頭制御文字と最終制御文字を通信管理が付加し，テキスト本体はHSC-APが作成します。

＜この項の構成＞

(1)　通常

(2)　ブロック

(3)　ヘッダ付き

(4)　透過モード

(5)　ヘッダ付き透過モード

(1)　通常

(2)　ブロック

(3)　ヘッダ付き

(4)　透過モード

(5)　ヘッダ付き透過モード

(1)～(5)の違いはLCBテーブルのlb_comdでHSC-APで設定してください。

付録B.2　通信管理→HSC-AP

テキストの先頭制御文字と最終制御文字を通信管理が削除し，テキスト本体はHSC-APにそのまま渡します。

＜この項の構成＞

(1)　通常

(2)　ブロック

(3)　ヘッダ付き

(4)　透過モード

(5)　ヘッダ付き透過モード

(1)　通常

(2)　ブロック

(3)　ヘッダ付き

(4)　透過モード

(5)　ヘッダ付き透過モード

(1)～(5)の違いはLCBテーブルのlb_rstsでHSC-APに渡します。

付録B.3　コード体系

両方向ともEBCDIKです。

付録C　シーケンス例

HSC1手順またはHSC2手順でのシーケンスを次に示します。なお，シーケンス中，BT_OPEN関数，BT_MDFY関数，BT_IDLT関数，BT_LOPN関数，BT_LCLS関数，およびBT_CLOSE関数は省略してあります。

また，シーケンスはすべて同期型で記述してあります。非同期型は，”return”を“BT_SELECT( )”と“BT_CHECK( )”に置き換えてください。

＜この節の構成＞

(1)　HSC1手順基本シーケンス

(2)　HSC2手順基本シーケンス

(3)　HSC2手順基本シーケンス（その2）＜回線を切断しないでデータ送受信を繰り返す場合＞

(4)　コンテンション

(5)　WACK（一時受信抑止）＜HSC-APの指示による場合＞

(6)　WACK（一時受信抑止）＜通信管理が自動送信する場合＞

(7)　TTD（一時送信延期）＜HSC-APの指示による場合＞

(8)　TTD（一時送信延期）＜通信管理が自動送信する場合＞

(9)　RVI（逆中断）

(10)　データ受信待ちキャンセル→データ送信

(11)　データチェックの回復

(12)　データ消失の回復

(13)　応答消失の回復

(14)　EOTキャッチボール（HSC2手順）

(15)　HSC2手順（ID不正）

(16)　公衆網（発信失敗）

(17)　回線障害

(18)　HSC1一括送受信シーケンス

(19)　HSC2一括送受信シーケンス＜回線切断しないでデータ送受信を繰り返す場合＞

(20)　コンテンション＜一括送受信シーケンス＞

(21)　WACK（一時受信抑止）＜HSC-APの指示による場合＞＜一括送受信シーケンス＞

(22)　WACK（一時受信抑止）＜通信管理が自動送信する場合＞＜一括送受信シーケンス＞

(23)　TTD（一時送信延期）＜一括送受信シーケンス＞

(24)　RVI（逆中断）＜一括送受信シーケンス＞

(25)　データ受信待ちキャンセル→データ送信

(26)　データチェックの回復＜一括送受信シーケンス＞

(27)　データ消失の回復＜一括送受信シーケンス＞

(28)　応答消失の回復＜一括送受信シーケンス＞

(29)　回線障害＜一括送受信シーケンス＞

(1)　HSC1手順基本シーケンス

(2)　HSC2手順基本シーケンス

(3)　HSC2手順基本シーケンス（その2）＜回線を切断しないでデータ送受信を繰り返す場合＞

(4)　コンテンション

(5)　WACK（一時受信抑止）＜HSC-APの指示による場合＞

(6)　WACK（一時受信抑止）＜通信管理が自動送信する場合＞

(7)　TTD（一時送信延期）＜HSC-APの指示による場合＞

(8)　TTD（一時送信延期）＜通信管理が自動送信する場合＞

(9)　RVI（逆中断）

(10)　データ受信待ちキャンセル→データ送信

(11)　データチェックの回復

(12)　データ消失の回復

(13)　応答消失の回復

(14)　EOTキャッチボール（HSC2手順）

(15)　HSC2手順（ID不正）

(16)　公衆網（発信失敗）

(17)　回線障害

(18)　HSC1一括送受信シーケンス

(19)　HSC2一括送受信シーケンス＜回線切断しないでデータ送受信を繰り返す場合＞

(20)　コンテンション＜一括送受信シーケンス＞

(21)　WACK（一時受信抑止）＜HSC-APの指示による場合＞＜一括送受信シーケンス＞

(22)　WACK（一時受信抑止）＜通信管理が自動送信する場合＞＜一括送受信シーケンス＞

(23)　TTD（一時送信延期）＜一括送受信シーケンス＞

(24)　RVI（逆中断）＜一括送受信シーケンス＞

(25)　データ受信待ちキャンセル→データ送信

(26)　データチェックの回復＜一括送受信シーケンス＞

(27)　データ消失の回復＜一括送受信シーケンス＞

(28)　応答消失の回復＜一括送受信シーケンス＞

(29)　回線障害＜一括送受信シーケンス＞

付録D　従来製品との差異

従来製品（HI-UX/WE2上で動作するXNF/S-E2）との差異を次に示します。

＜この節の構成＞

(1)　最大送受信データ長

(2)　共用ライブラリのリンク方法

(1)　最大送受信データ長

HSC-APの送受信データの最大長が8,248バイトではなく，8,158バイトになります。

同様に，透過モード時は8,246バイトではなく，8,156バイトになります。

(2)　共用ライブラリのリンク方法

XNF/ASでは，共用ライブラリのリンク方法が変更になります。共用ライブラリのリンク方法については，「3.1　アプリケーションプログラムの作成手順」を参照してください。

索引

[記号]
[Ｂ][Ｄ][Ｅ][Ｈ][Ｉ][Ｌ][Ｒ][Ｓ][Ｔ][Ｗ]
[ア行][カ行][サ行][タ行][ハ行][マ行][ラ行]

(記号)

/lib/libbsc.so

(英字)

(Ｂ)

bsc.h

BT_CANL( )

BT_CHECK( )

BT_CLOSE( )

BT_IDLT( )

BT_LCLS( )

BT_LOPN( )

BT_MDFY( )

BT_OPEN( )

BT_RCTN( )

BT_RINI( )

BT_RTXT( )

BT_SELECT( )

BT_SETDIAL( )

BT_WCTN( )

BT_WDSC( )

BT_WEOT( )

BT_WINI( )

BT_WRST( )

BT_WTTD( )

BT_WTXT( )

(Ｄ)

DCT

dct

dlicom/bsc.h

dt_mode

dt_rtyl

dt_timl

(Ｅ)

errno.h

(Ｈ)

HSC-AP

HSC-AP〔用語解説〕

HSC-API〔用語解説〕

HSC-API機能

(Ｉ)

IDLST

idlst

il_anstone

il_caltone

il_idsiz

il_nosiz

il_pnno

il_tmid

(Ｌ)

lb_ccod

lb_comd

lb_comdx

lb_errc

lb_id

lb_idsiz

lb_rbuf

lb_rsiz

lb_rsts

lb_sbuf

lb_setdl

lb_setsiz

lb_ssiz

lb_tmid

lb_tmidsz

lb_xnfst

LCB

lcb

LCBリターン情報

(Ｒ)

rl_ENQ

rl_EWK

rl_TTD

rl_tWK

rl_txt

rlist

(Ｓ)

selectシステムコール

selectシステムコール〔用語解説〕

(Ｔ)

tl_rsp

tlist

TTD自動送信機能

(Ｗ)

WACK自動送信機能

(ア行)

(あ)

アプリケーションプログラム間の通信の流れ

アプリケーションプログラムの作成手順

アンサートーン時間

(い)

インタフェース構造体

インタフェース構造体の記述方法

(え)

エラー詳細コード

(カ行)

(か)

回線交換ID信号受信用バッファサイズ

回線交換ID信号受信用バッファポインタ

回線交換選択信号サイズ

回線交換選択信号バッファポインタ

回線識別子

回線識別子〔用語解説〕

回線のオープン

回線のクローズ

回線の接続

回線の切断

(こ)

コーリングトーン時間

コマンド

コマンド拡張部

コンテンション優先種別

(サ行)

(し)

シーケンス例

終了コード

受信監視時間

受信テキスト情報

受信バッファサイズ

受信バッファポインタ

(そ)

送信データサイズ

送信バッファポインタ

(タ行)

(た)

ターミナルID受信用バッファサイズ

ターミナルID受信用バッファポインタ

ターミナルID長

ターミナルIDバッファポインタ

タイマテーブル

(つ)

通信管理状態コード

(て)

データ形式

データの転送

データリンク確立失敗時のENQのリトライ回数

データリンク確立時のWACK受信のENQリトライ回数

テキスト送受信のリトライ回数

テキスト送信に対するWACK受信ENQリトライ回数

電話番号長

電話番号バッファポインタ

(と)

同期方式

同期方式〔用語解説〕

ドライバのオープン

ドライバのクローズ

(ハ行)

(ひ)

非同期方式

非同期方式〔用語解説〕

(ふ)

プロトコル種別

(へ)

ヘッダファイル

(マ行)

(も)

モード

(ラ行)

(ら)

ライブラリ

ライブラリ関数一覧

ライブラリ関数とインタフェース構造体の関係

ライブラリ関数の記述方法

ライブラリ関数の文法

ライブラリ関数発行基本シーケンス

ライブラリ関数発行シーケンス（テキスト一括送受信）

(り)

リトライテーブル

リンク

■ 商標類

AIXは，米国におけるInternational Business Machines Corporationの登録商標です。
AIX 5Lは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
UNIXは，X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標です。