| 前へ | 次へ | 目次 | 索引 |
現在の日付けおよび時間の入手
例)
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';
}
|
| 前へ | 次へ | 目次 | 索引 |