library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

HP OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (下巻)


前へ 次へ 目次 索引



gsignal

指定されたソフトウェア・シグナルを生成します。このシグナルは, signalssignalsigvec関数によって設定されたアクション・ルーチンを起動します。

形式

#include <signal.h>

int gsignal (int sig [, int sigcode]);


引数

sig

生成するシグナル。

sigcode

省略可能なシグナル・コード。たとえば,シグナル SIGFPE (算術演算トラップ・シグナル) には 10 種類のコードがあり,各コードは異なる種類の算術演算トラップを表します。

シグナル・コードはニーモニックまたは数字で表現できます。算術演算トラップ・コードは 1〜10 の数字で表現されますが, SIGILL コードは 0〜2 の数字で表現されます。コード値は <signal.h>ヘッダ・ファイルに定義されています。シグナルのニーモニック,コード,対応する OpenVMS 例外の一覧については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』表 4-4 および表 4-5 を参照してください。


説明

gsignal関数を呼び出すと,次のいずれかの結果になります。

詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 4 章を参照してください。

raisesignalssignalsigvecも参照してください。


戻り値

0 sig 引数が <signal.h> ヘッダ・ファイルに定義されている範囲外であることを示します。 errno が EINVAL に設定されます。
sig SIG_IGN (シグナルの無視) がシグナルのアクションとして設定されていることを示します。
x signal ssignal sigvec がシグナルに対してアクション関数を設定したことを示します。その関数が呼び出され, gsignal から戻り値が返されます。


hypot

直角三角形の斜辺の長さを返します。

形式

#include <math.h>

double hypot (double x, double y);

float hypotf (float x, float y); (Alpha, I64)

long double hypotl (long double x, long double y); (Alpha, I64)


引数

x

実数値。

y

実数値。

説明

hypot関数は直角三角形の斜辺の長さを返します。ただし,xy は三角形の垂直な辺を表します。長さは次の公式で計算されます。


sqrt(x2 + y2) 

オーバフローが発生すると,戻り値は未定義になり, errnoは ERANGE に設定されます。


戻り値

x 斜辺の長さ。
HUGE_VAL オーバフローが発生したことを示します。 errno は ERANGE に設定されます。
0 アンダフローが発生したことを示します。 errno は ERANGE に設定されます。
NaN x または y が NaN です。 errno は EDOM に設定されます。


iconv

あるコードセットでコーディングされている文字を別のコードセットでコーティングされた文字に変換します。

形式

#include <iconv.h>

size_t iconv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);


引数

cd

変換記述子。 iconv_openの呼び出しが正常終了すると,この値が返されます。

inbuf

入力バッファの 1 文字目を指す変数を指すポインタ。

inbytesleft

この引数の初期値は,入力バッファ (inbuf) の末尾までのバイト数を示す変数を指すポインタです。変換が完了すると,この変数は inbuf で変換されなかったバイト数を示します。

outbuf

出力バッファの最初の使用可能なバイトを指す変数を指すポインタ。出力バッファには変換後の文字が格納されます。

outbytesleft

この引数の初期値は,出力バッファ (outbuf) の末尾までのバイト数を示す変数を指すポインタです。変換が完了すると,この変数は outbuf に残されているバイト数を示します。

説明

iconv関数は,inbuf で示されるバッファ内の文字を別のコードセットの文字に変換します。変換後の文字は outbuf で示されるバッファに格納されます。変換のタイプは変換記述子 cd によって指定します。 iconv_openの呼び出しが正常終了すると,この記述子が返されます。

入力バッファから不正な文字が検出されると,有効な最後の文字まで変換した後,変換は停止します。 inbytesleft によって示される変数は,変換されなかった入力バッファ内のバイト数を表すように更新されます。 outbytesleft によって示される変数は,出力バッファに残されているバイト数を示すように更新されます。


戻り値

x 実行された同一でない変換の数。正常終了した変換を示します。ほとんどの場合,0 が返されます。
( size_t ) - 1 エラー条件を示します。 errno は次のいずれかに設定されます。

  • EBADF--- cd 引数が有効な変換記述子でありません。

  • EILSEQ---不正な文字が検出されたため,変換が停止しました。

  • E2BIG---出力バッファの領域が不足しているため,変換が停止しました。

  • EINVAL---入力バッファの末尾に不完全な文字があるため,変換が停止しました。


iconv_close

指定された変換記述子と,その記述子に割り当てられているリソースの割り当てを解除します。

形式

#include <iconv.h>

int iconv_close (iconv_t cd);


引数

cd

割り当てを解除する変換記述子。 iconv_openの呼び出しが正常終了すると,変換記述子が返されます。

戻り値

0 変換記述子の割り当てが正しく解除されたことを示します。
- 1 エラーが発生したことを示します。 errno は次のいずれかに設定されます。

  • EBADF--- cd 引数が有効な変換記述子でありません。

  • EVMSERR---変換不可能な OpenVMS エラーが発生しました。 vaxc$errno には VMS エラー・コードが格納されます。


iconv_open

指定されたコードセット変換のために変換記述子を割り当てます。

形式

#include <iconv.h>

iconv_t iconv_open (const char *tocode, const char *fromcode);


引数

tocode

変換後の文字のコードセットの名前。

fromcode

変換前のコードセットの名前。現在使用可能なコードセットの一覧と新しいコードセットの追加方法の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 10 章を参照してください。

戻り値

x 変換記述子。呼び出しが正常終了したことを示します。この記述子はこの後の iconv の呼び出しで使用されます。
(iconv_t) - 1 エラーが発生したことを示します。 errno は次のいずれかに設定されます。

  • EMFILE---プロセスにファイルをオープンするための十分な I/O チャネルがありません。

  • ENOMEM---使用できる領域が不足しています。

  • EINVAL--- fromcodetocode によって指定される変換はサポートされません。

  • EVMSERR---変換不可能な OpenVMS エラーが発生しました。 vaxc$errno には OpenVMS エラー・コードが格納されます。 vaxc$errno に SS$_BADCHKSUM という値が格納されている場合は,変換テーブル・ファイルは見つかったものの,テーブルの内容が壊れていることを示します。 vaxc$errno に SS$_IDMISMATCH という値が格納されている場合は,変換テーブル・ファイルのバージョンが C ランタイム・ライブラリのバージョンと一致しないことを示します。



#include <stdio.h> 
#include <iconv.h> 
#include <errno.h> 
 
 
int main() 
{ 
    /* Declare variables to be used                      */ 
 
    char fromcodeset[30]; 
    char tocodeset[30]; 
    int iconv_opened; 
    iconv_t iconv_struct;       /* Iconv descriptor      */ 
 
    /* Initialize variables                              */ 
 
    sprintf(fromcodeset, "DECHANYU"); 
    sprintf(tocodeset, "EUCTW"); 
    iconv_opened = FALSE; 
 
    /* Attempt to create a conversion descriptor for the */ 
    /* codesets specified. If the return value from      */ 
    /* iconv_open is -1 then an error has occurred.      */ 
    /*  Check the value of errno.                        */ 
 
    if ((iconv_struct = iconv_open(tocodeset, fromcodeset)) 
       == (iconv_t) - 1) { 
 
        /* Check the value of errno                      */ 
 
        switch (errno) { 
        case EMFILE: 
        case ENFILE: 
            printf("Too many iconv conversion files open\n"); 
            break; 
 
        case ENOMEM: 
            printf("Not enough memory\n"); 
            break; 
 
        case EINVAL: 
            printf("Unsupported conversion\n"); 
            break; 
 
        default: 
            printf("Unexpected error from iconv_open\n"); 
            break; 
       } 
    } 
    else 
 
        /* Successfully allocated a conversion descriptor   */ 
 
        iconv_opened = TRUE; 
 
    /*  Was a conversion descriptor allocated               */ 
 
    if (iconv_opened) { 
 
        /* Attempt to deallocate the conversion descriptor. */ 
        /* If iconv_close returns -1 then an error has      */ 
        /* occurred.                                        */ 
 
        if (iconv_close(iconv_struct) == -1) { 
 
            /* An error occurred. Check the value of errno  */ 
 
            switch (errno) { 
            case EBADF: 
                printf("Conversion descriptor is invalid\n"); 
                break; 
            default: 
                printf("Unexpected error from iconv_close\n"); 
                break; 
            } 
        } 
    } 
    return (EXIT_FAILURE); 
} 


ilogb (Alpha, I64)

引数の指数部を返します。

形式

#include <math.h>

int ilogb (double x);

int ilogbf (float x);

int ilogbl (long double x);


引数

x

実数値。

説明

ilogb関数は,引数 x の指数部を返します。正式にいえば,logr|x| の整数部 (符号付き整数) が戻り値になります。ただし,x はゼロでない数値が対象となります。また r は,そのマシンにおける浮動小数点演算の基数で, <float.h>に FLT_RADIX 値として定義されているものが使用されます。

戻り値

n 成功したことを示します。n は, x の指数部を示す符号付き整数値です。これらの関数では,対応する logb 関数を呼び出して,その戻り値を int 型にキャスト (型変換) した場合と同じ結果が得られます。


[w]inch

ウィンドウを変更せずに,指定されたウィンドウの現在のカーソルの位置にある文字を返します。 inch関数は stdscrウィンドウに対して動作します。

形式

#include <curses.h>

char inch();

char winch (WINDOW *win);


引数

win

ウィンドウを指すポインタ。

戻り値

x 返された文字。
ERR 入力エラーを示します。


index

文字列から 1 文字を検索します。

形式

#include <strings.h>

char *index (const char *s, int c);

関数バリアント index関数には, _index32および _index64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。

引数

s

文字を検索する文字列。

c

検索する目的の文字。

説明

index関数は strchr関数と同じであり,一部の UNIX 実装との互換性を維持するために提供されます。

initscr

端末タイプのデータおよびすべての画面関数を初期化します。 Curses 関数を使用する場合は,その前に initscrを呼び出す必要があります。

形式

#include <curses.h>

void initscr (void);


説明

initscr関数の OpenVMS Curses バージョンは,初期化を行う前に画面をクリアします。 BSD ベースの Curses バージョンは画面をクリアしません。

initstate

乱数ジェネレータを初期化します。

形式

#include <stdlib.h>

char *initstate (unsigned int seed, char *state, int size);


引数

seed

初期シード値。

state

状態情報の配列を指すポインタ。

size

状態情報配列のサイズ。

説明

initstate関数は乱数ジェネレータを初期化します。この関数を使用すると,将来使用するために,引数として渡された状態配列を初期化できます。状態配列のサイズ (バイト数) は,使用する乱数ジェネレータがどの程度精巧であるかを判断するために, initstate関数で使用されます。状態配列が大きくなればなるほど,乱数はよりランダムになります。

状態情報のサイズは 8,32,64,128,256 バイトのいずれかです。 8 バイトより小さいサイズを指定すると,エラーになります。ここに示した値以外の場合は,これらの値の中で最も近い値になるように切り捨てられます。

seed 引数は乱数シーケンスの開始ポイントを指定し,同じポイントで再起動するために提供されます。 initstate関数は,前の状態情報配列を指すポインタを返します。

状態を初期化した後, setstate関数を使用して状態を迅速に切り換えることができます。 state 引数によって定義される配列は, initstate関数が呼び出されるか, setstate関数が再び呼び出されるまで,この後の乱数の生成で使用されます。 setstate関数は前の状態配列を指すポインタを返します。

初期化した後,状態配列は次のいずれかの方法で異なるポイントから再開することができます。

setstatesrandomrandomも参照してください。


戻り値

x 前の状態配列情報を指すポインタ。
0 エラーを示します。 8 バイト未満の状態情報を指定して関数を呼び出しました。詳細なエラーはグローバルな errno に指定されます。


前へ 次へ 目次 索引