前へ | 次へ | 目次 | 索引 |
現在の日付けおよび時間の入手
例)
12時間制の場合平成元年 2月14日 (火) 午後 5時21分 3秒 24時間制の場合平成元年 2月14日 (火) 17時21分 3秒 |
<形式>
ret-status = JLB$DATE_TIME ( dst-str [, flg[, out-len]] )
<引数>
dst-str | |
---|---|
JLB usage | 出力文字列 |
access | 出力のみ |
mechanism | Descriptor渡し |
flg | |
JLB usage | 時間制の指定 |
type | Byte |
access | 入力のみ |
mechanism | Reference渡し |
0 : 12時間制(省略時の値) | |
1 : 24時間制 | |
out-len | |
JLB usage | 出力文字列のバイト長 |
type | Word |
access | 出力のみ |
mechanism | Reference渡し |
<戻り値>
ret-status | SS$_NORMAL | 正常終了 |
LIB$_STRTRU | 出力結果の切捨てが行われた |
JLB$DATE_TIME で使用する元号の名称および日付は,論理名で定義されます。この論理名は,システムのスタートアップ時に, SYS$STARTUP:JSY$DT_STARTUP.COM を実行することによって定義されます (SYS$STARTUP:JSY$STARTUP.COM の中から実行されます)。省略時には次のように定義します。
$ define/system/exec jsy$era_name - "平成", - "昭和", - "大正", - "明治" $ define/system/exec jsy$era_begin_date - "19890108", - "19261425", - "19140730", - "18680908" $ define/system/exec jsy$era_display_form 1 |
3番目の論理名,JSY$ERA_DISPLAY_FORMAT は,その元号の初年度を「1年(0)」で表示するか,または「元年(1)」で表示するかを選択します。省略時の設定では「元年」です。
例)
#include <stdio.h> #include <descrip.h> #include <ssdef.h> #include <libdef.h> #define BUFLEN 100 main() { struct dsc$descriptor_s dst_str; char flg; short int out_len; int ret_status; char buffer[ BUFLEN ]; extern int jlb$date_time(); dst_str.dsc$b_class = DSC$K_CLASS_S; dst_str.dsc$b_dtype = DSC$K_DTYPE_T; dst_str.dsc$w_length = sizeof( buffer ); dst_str.dsc$a_pointer = buffer; for ( flg = 0 ; flg < 2 ; ++flg ) { ret_status = jlb$date_time( &dst_str, &flg, &out_len ); buffer[ out_len ] = '\0'; printf( "フラグ :%1d\n 時間 :\"%s\" ステータス :", flg, dst_str.dsc$a_pointer ); switch ( ret_status ) { case SS$_NORMAL: printf( "SS$_NORMAL" ); break; case LIB$_STRTRU: printf( "LIB$_STRTRU" ); break; } putchar( '\n' ); } } |
漢字端末かどうかのチェック
端末が VT80 に設定されているかどうか,または KANJIGEN の SET /OUTPUT=KANJI により出力が漢字に設定されているかどうかをチェックします。
<形式>
ret-status = JLB$DEV_KANJI ( device-name )
<引数>
device-name | |
---|---|
JLB usage | デバイス名 |
type | 文字列 |
access | 入力のみ |
mechanism | Descriptor渡し |
<戻り値>
ret-status | 1 : 漢字端末 |
0 : 漢字端末ではない |
漢字入力端末かどうかのチェック
端末が KANJIGEN の SET /INPUT=KANJI により,漢字入力に設定されているかどうかをチェックします。
<形式>
ret-status = JLB$DEV_KANJI_IN ( device-name )
<引数>
device-name | |
---|---|
JLB usage | デバイス名 |
type | 文字列 |
access | 入力のみ |
mechanism | Descriptor渡し |
<戻り値>
ret-status | 1 : 漢字入力端末 |
0 : 漢字入力端末ではない |
基本ライブラリ とは,1 文字単位の変換など,より細かな処理を行うためのルーチン群です。
この章では,基本ライブラリの次の項目について説明します。
基本ライブラリ・ルーチン一覧
日本語文字列操作ルーチン
文字変換ルーチン
文字列変換ルーチン
日本語データを扱うための基本的なルーチン群です。1バイト/2バイトの文字コードを正しく取り扱うために使用します。
JSY$CH_NEXT | 次の文字の文字位置の入手 |
JSY$CH_PREV | 前の文字の文字位置の入手 |
JSY$CH_CURR | 現在の文字の文字位置の入手 |
JSY$POS_NEXT | 次の文字の文字位置の入手,
および文字列の終わりのチェック |
JSY$POS_PREV | 前の文字の文字位置の入手,
および文字列の終わりのチェック |
JSY$POS_CURR | 現在の文字の文字位置の入手,
および文字列の終わりのチェック |
JSY$CH_RCHAR | 文字列からの文字の取り出し |
JSY$CH_RNEXT | 文字列からの文字の取り出し |
JSY$CH_WCHAR | 文字列への文字の書き込み |
JSY$CH_WNEXT | 文字列への文字の書き込み |
JSY$CH_GCHAR | 文字列からの文字の取り出し,
および文字列の終わりのチェック |
JSY$CH_GNEXT | 文字列からの文字の取り出し,
および文字列の終わりのチェック |
JSY$CH_PCHAR | 文字列への文字の書き込み,
および文字列の終わりのチェック |
JSY$CH_PNEXT | 文字列への文字の書き込み,
および文字列の終わりのチェック |
JSY$CH_SIZE | 文字が占めるバイト数の入手 |
JSY$CH_NBYTE | 文字列が占めるバイト数の入手 |
JSY$CH_NCHAR | 文字列に含まれる文字数の入手 |
JSY$POSITION | 文字列の検索 |
JSY$STR_EQUAL | 英大文字/小文字,全角/半角,
ひらがな/カタカナ変換による文字列の比較 |
JSY$STR_START | 英大文字/小文字,全角/半角,
ひらがな/カタカナ変換による文字列の比較 |
JSY$STR_SEARCH | 英大文字/小文字,全角/半角,
ひらがな/カタカナ変換による文字列の検索 |
JSY$TRIM | 文字列の後の空白の切り捨て |
JSY$TRUNC | 文字列の切り捨て |
JSY$LOCC | 文字の検索 |
JSY$SKPC | 文字の飛び越し |
文字単位の各種変換を行うルーチン群です。
JSY$CHG_ROM_HALF | ローマ文字全角から半角への変換 |
JSY$CHG_ROM_FULL | ローマ文字半角から全角への変換 |
JSY$CHG_ROM_SIZE | ローマ文字全角/半角の相互変換 |
JSY$CHG_ROM_LOWER | 英文字半角/全角の小文字への変換 |
JSY$CHG_ROM_UPPER | 英文字半角/全角の大文字への変換 |
JSY$CHG_ROM_CASE | 英文字全角/半角の大文字/小文字の相互変換 |
JSY$CHG_KANA_HIRA | 全角カタカナから全角ひらがなへの変換 |
JSY$CHG_KANA_KATA | 全角ひらがなから全角カタカナへの変換 |
JSY$CHG_KANA_KANA | 全角ひらがな/全角カタカナの相互変換 |
JSY$CHG_KANA_DAKU | 全角ひらがな/カタカナの濁点/半濁点処理 |
JSY$CHG_KANA_HALF | 全角ひらがな/カタカナから半角カタカナへの変換 |
JSY$CHG_KANA_FULL | 半角カタカナから全角ひらがな/カタカナへの変換 |
JSY$CHG_GENERAL | パラメータ指定による,英大文字/小文字,全角/半角,ひらがな/カタカナ |
JSY$CHG_JIS_KUTEN | JIS 区点番号から DEC 漢字コードへの変換 |
JSY$CHG_KEISEN | 数字から罫線文字への変換 |
文字列の各種変換を行うルーチン群です。
JSY$TRA_ROM_HALF | ローマ文字全角から半角への変換 |
JSY$TRA_ROM_FULL | ローマ文字半角から全角への変換 |
JSY$TRA_ROM_SIZE | ローマ文字全角/半角の相互変換 |
JSY$TRA_ROM_LOWER | 英文字半角/全角の小文字への変換 |
JSY$TRA_ROM_UPPER | 英文字半角/全角の大文字への変換 |
JSY$TRA_ROM_CASE | 英文字全角/半角の大文字/小文字の相互変換 |
JSY$TRA_ROM_KANA | ローマ字から全角ひらがな/カタカナへの変換 |
JSY$TRA_KANA_HIRA | 全角カタカナから全角ひらがなへの変換 |
JSY$TRA_KANA_KATA | 全角ひらがなから全角カタカナへの変換 |
JSY$TRA_KANA_KANA | 全角ひらがな/全角カタカナの相互変換 |
JSY$TRA_KANA_DAKU | 全角ひらがな/カタカナの濁点/半濁点処理 |
JSY$TRA_KANA_HALF | 全角ひらがな/カタカナから半角カタカナへの変換 |
JSY$TRA_KANA_FULL | 半角カタカナから全角ひらがな/カタカナへの変換 |
JSY$TRA_SYMBOL | 記号変換 |
4.2 日本語文字列操作ルーチン
日本語文字列操作ルーチンは,日本語データを扱うための基本的なルーチン群です。 1 バイト /2 バイトの文字コードを正しく取り扱うために使用します。
次の文字の文字位置の入手
<形式>
next-ptr = JSY$CH_NEXT ( char-ptr )
<引数>
char-ptr | |
---|---|
JSY usage | 文字の1バイト目を指すポインタ |
mechanism | Value渡し |
<戻り値>
next-ptr | 1文字次の文字の1バイト目を指すポインタ |
例)
#include <stdio.h> #include <string.h> static void create_display_string(); main() { char *char_ptr, *next_ptr; char string[] = "日本語RTL"; char disp_str[32]; int byte_offset = 4; extern char *jsy$ch_next(); char_ptr = string + byte_offset; printf( "文字列 :\"%s\"\n", string ); create_display_string( char_ptr, disp_str ); printf( "実行前の位置の文字 :%s\n", disp_str ); next_ptr = jsy$ch_next( char_ptr ); create_display_string( next_ptr, disp_str ); printf( "実行後の位置の文字 :%s\n", disp_str ); } static void create_display_string(src, disp) char *src; char *disp; { int nof_byte_char = 1; unsigned char check; check = (unsigned char)(*src); if ( ( 0x0A1 <= check ) && ( check <= 0x0FE ) ) /* 範囲内なら2バイト文字 */ nof_byte_char = 2; strncpy( disp, src, nof_byte_char ); disp[ nof_byte_char ] = '\0'; } |
前の文字の文字位置の入手
<形式>
prev-ptr = JSY$CH_PREV ( top-ptr, char-ptr )
<引数>
top-ptr | |
---|---|
JSY usage | 文字列の先頭を指すポインタ |
mechanism | Value渡し |
char-ptr | |
JSY usage | 文字の1バイト目を指すポインタ |
mechanism | Value渡し |
<戻り値>
prev-ptr | 1文字前の文字の1バイト目を指すポインタ |
char-ptr ≦ top-ptr の場合は0 |
現在の文字の文字位置の入手
<形式>
curr-ptr = JSY$CH_CURR ( top-ptr, char-ptr )
<引数>
top-ptr | |
---|---|
JSY usage | 文字列の先頭を指すポインタ |
mechanism | Value渡し |
char-ptr | |
JSY usage | 文字の1バイト目または2バイト目を指すポインタ |
mechanism | Value渡し |
<戻り値>
curr-ptr | 文字の1バイト目を指すポインタ |
char-ptr < top-ptr の場合は0 |
次の文字の文字位置の入手,および文字列の終わりのチェック
<形式>
next-ptr = JSY$POS_NEXT ( char-ptr, end-ptr )
<引数>
char-ptr | |
---|---|
JSY usage | 文字の1バイト目を指すポインタ |
mechanism | Value渡し |
end-ptr | |
JSY usage | 文字列の終わりを示すポインタ |
mechanism | Value渡し |
<戻り値>
next-ptr | 1文字次の文字の1バイト目を指すポインタ |
char-ptr ≧ end-ptr の場合は 0 |
前の文字の文字位置の入手,および文字列の終わりのチェック
<形式>
prev-ptr = JSY$POS_PREV ( top-ptr, char-ptr, end-ptr )
<引数>
top-ptr | |
---|---|
JSY usage | 文字列の先頭を指すポインタ |
mechanism | Value渡し |
char-ptr | |
JSY usage | 文字の1バイト目を指すポインタ |
mechanism | Value渡し |
end-ptr | |
JSY usage | 文字列の終わりを示すポインタ |
mechanism | Value渡し |
<戻り値>
prev-ptr | 1文字前の文字の1バイト目を指すポインタ |
char-ptr ≦ top-ptr または char-ptr > end-ptr の場合は 0 |
例)
#include <stdio.h> #include <string.h> #define MSB 0x80 static void create_display_string(); main() { char *top_ptr, *char_ptr, *end_ptr, *prev_ptr; char string[] = "日本語RTL"; char disp_str[32]; int byte_offset = 6; extern char *jsy$pos_prev(); top_ptr = string; end_ptr = string + strlen( string ); char_ptr = string + byte_offset; create_display_string( char_ptr, disp_str ); printf( "文字列 :\"%s\"\n", string ); printf( "実行前の位置の文字 :%s\n", disp_str ); prev_ptr = jsy$pos_prev( top_ptr, char_ptr, end_ptr ); create_display_string( prev_ptr, disp_str ); printf( "実行後の位置の文字 :%s\n", disp_str ); } static void create_display_string(src, disp) char *src; char *disp; { int nof_byte_char = 1; unsigned char check; check = (unsigned char)(*src); if ( ( 0x0A1 <= check ) && ( check <= 0x0FE ) ) /* 範囲内なら2バイト文字 */ nof_byte_char = 2; strncpy( disp, src, nof_byte_char ); disp[ nof_byte_char ] = '\0'; } |
前へ | 次へ | 目次 | 索引 |