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


前へ 次へ 目次 索引


成功して完了すると, glob関数は値 0 (ゼロ) を返します。 pglob-> gl_pathcフィールドは,一致したパス名の数を返します。 pglob-> gl_pathvフィールドには,一致したパス名をソートした, NULL で終了するリストへのポインタが格納されています。 pglob-> gl_pathc内の,一致したパス名の数が 0 (ゼロ) の場合, pglob-> gl_pathv引数のポインタの値は定義されていません。

glob関数がエラーで終了した場合,この関数は,ゼロ以外の定数 GLOB_ABORTED,GLOB_NOMATCH,または GLOB_NOSPACE ( <glob.h>ヘッダ・ファイルに定義されています) のいずれかを返します。この場合,pglob 引数の値は,やはり上記で定義されたとおりに設定されます。

検索中,オープンできないか読み込めないディレクトリを検出し, errfunc 引数値が NULL でなかった場合は, glob関数は 2 つの引数 epatheerrno を指定して errfunc を呼び出します。

epath--- ディレクトリがオープンできないか読み込めないために失敗したパス名。
eerrno--- epath 引数で指定されるパス名に関する失敗で, opendir関数, readdir関数,または stat関数が設定した errno値。

errfunc を呼び出して,ゼロ以外が返されるか, flags に GLOB_ERR フラグが設定されている場合, glob関数は,スキャン済みのパス名を反映するために pglob 引数への設定を行った後,スキャンを停止し,GLOB_ABORTED を返します。 GLOB_ERR が設定されておらず,errfunc が NULL であるか, errfunc がゼロを返した場合,エラーは無視されます。

errno 値は返されません。

globfreefnmatchreaddir,および statも参照してください。


戻り値

0 成功を示します。
GLOB_ABORTED GLOB_ERROR が設定されているか, errfunc がゼロ以外の値を返したため,スキャンが停止しました。
GLOB_NOMATCH パターンが既存のパス名と一致せず, flags に GLOB_NOCHECK が設定されていませんでした。
GLOB_NOSPACE メモリを割り当てようとしましたが,失敗しました。


globfree

glob関数への以前の呼び出しで pglob 引数に関連付けられたスペースを解放します。

形式

#include <glob.h>

void globfree (glob_t *pglob);


引数

pglob

以前に割り当てられた glob_t構造体へのポインタ。

説明

globfree関数は, glob関数への以前の呼び出しで pglob 引数に関連付けられたスペースを解放します。 globfree関数には,戻り値はありません。

gmtime, gmtime_r

秒数で表した時間を年月日時分秒形式の UTC 時刻に変換します。

形式

#include <time.h>

struct tm *gmtime (const time_t *timer);

struct tm *gmtime_r (const time_t *timer, struct tm *result); (ISO POSIX-1)

関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると, gmtime_r関数に対して, OpenVMS バージョン 7.0 より前の動作に相当するローカル時刻べースのエントリ・ポイントが有効になります。

引数

timer

Epoch からの経過時間を秒数で指定する変数を指すポインタ。

result

結果が格納される tm構造体を指すポインタ。

tm構造体は <time.h>ヘッダ・ファイルに定義されており, localtimeの説明の 表 REF-4 にも示されています。


説明

gmtime関数と gmtime_r関数は, timer によって示される時刻 (Epoch からの経過時間 (秒数)) を,協定世界時 (UTC) として表した年月日時分秒形式の時刻に変換し, tm構造体に格納します。

gmtime_r関数と gmtime関数の違いは, gmtime_r関数は,ユーザ指定の tm構造体に結果を格納するのに対し, gmtime関数は, HP C RTL で割り当てられたスレッド固有の静的メモリに結果を格納する点です。このため, gmtimeを再び呼び出すと,結果が上書きされます。結果を保存する必要がある場合は,コピーを作成しなければなりません。

gmtimeは,正常終了すると, tm構造体を指すポインタを返します。 gmtime_rは 2 番目の引数を返します。異常終了すると,これらの関数は NULL ポインタを返します。

注意

一般に,UTC ベースの時刻関数は,プロセス単位のデータであるメモリ内のタイム・ゾーン情報に影響を与える可能性があります。しかし,アプリケーションの実行中,システム・タイム・ゾーンが変化せず ( これは一般的なケースです ),タイム・ゾーン・ファイルのキャッシュが有効に設定されている場合 ( これはデフォルトです ),時刻関数 asctime_rctime_rgmtime_rlocaltime_r_rバリアントはスレッド・セーフで,かつ AST リエントラントです。

しかし,アプリケーションの実行中にシステム・タイム・ゾーンが変化する可能性がある場合や,タイム・ゾーン・ファイルのキャッシュが有効に設定されていない場合は,UTC ベースの時刻関数のバリアントはいずれも 3 番目の関数クラスに属し,これはスレッド・セーフでも AST リエントラントでもありません。


戻り値

x tm 構造体を指すポインタ。
NULL エラーを示します。 errno は次の値に設定されます。

  • EINVAL--- timer 引数が NULL です。


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 only)

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


引数

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); 
} 


前へ 次へ 目次 索引