標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4 |
両方 | POSIX(ON) |
#define _XOPEN_SOURCE
#include <ctype.h>
int toascii(int c);
#define _ALL_SOURCE
#include <ctype.h>
int toascii(int c);
_XOPEN_SOURCE の特殊な動作: toascii() 関数は、その引数を 7 ビットの US-ASCII 文字コード に変換します。
toascii() 関数は、EBCDIC 文字を ASCII に変換するためのものでは ないので、この関数の使用を 試みても、想定したほど機能を果たしません。
_ALL_SOURCE の特殊な動作: toascii() 関数は、c モジュロ 256 が、現行ロケールでの Latin 1 文字、<入力文字> 用の、単一バイト EBCDIC エンコードであると見なします。したがって、toascii() は、toascii() が (例えば、*IX システム上の) ASCII ロケールの <入力文字> をマップする文字 <出力文字> を判別し、<出力文字> の EBCDIC エンコードを現行ロケールに戻します。
例えば、toascii() を呼び出すプログラムが、_ALL_SOURCE を定義してコンパイルされ、toascii() モジュロ 256 に入力された値 c が、現行ロケールの <国際通貨記号> の EBCDIC エンコードである場合には、toascii() は、<国際通貨記号> を ASCII プラットフォームの <ドル> にマップするので、<ドル> の EBCDIC エンコードを現行ロケールに戻します。
/*********************************************************************/
/* */
/* IBM-1047 toascii table (sorted by ebcdic) */
/* */
/* For ISO-8859 character encoding toascii(ch) returns ch for */
/* values of ch less than 128 and ch-128 for values between */
/* 128 and 255, inclusive. Table below shows corresponding */
/* toascii(ch) equivalence for IBM-1047 character encoding */
/* of the Latin character set. */
/* */
/* IBM 1047 ISO 8859-1 */
/* Character Encoding Encoding */
/* (Symbolic Name) (Hexadecimal) (Hexadecimal) */
/* */
/* ch toascii(ch) ch toascii(ch) ch toascii(ch) */
/* */
/* <NUL> <NUL> 00 00 00 00 */
/* <SOH> <SOH> 01 01 01 01 */
/* <STX> <STX> 02 02 02 02 */
/* <ETX> <ETX> 03 03 03 03 */
/* <SEL> <IFS/IS4> 04 1C 9C 1C */
/* <HT> <HT> 05 05 09 09 */
/* <RNL> <ACK> 06 2E 86 06 */
/* <DEL> <DEL> 07 07 7F 7F */
/* <GE> <ETB> 08 26 97 17 */
/* <SPS> <CR> 09 0D 8D 0D */
/* <RPT> <SO> 0A 0E 8E 0E */
/* <VT> <VT> 0B OB 0B 0B */
/* <FF> <FF> 0C 0C 0C 0C */
/* <CR> <CR> 0D 0D 0D OD */
/* <SO> <SO> 0E 0E 0E OE */
/* <SI> <SI> 0F 0F 0F 0F */
/* <DLE> <DLE> 10 10 10 10 */
/* <DC1> <DC1> 11 11 11 11 */
/* <DC2> <DC2> 12 12 12 12 */
/* <DC3> <DC3> 13 13 13 13 */
/* <RES/ENP> <IGS/IS3> 14 1D 9D 1D */
/* <NL> <NL> 15 15 0A 0A */
/* <BS> <BS> 16 16 08 08 */
/* <POC> <BEL> 17 2F 87 07 */
/* <CAN> <CAN> 18 18 18 18 */
/* <EM> <EM> 19 19 19 19 */
/* <UBS> <DC2> 1A 12 92 12 */
/* <CU1> <SI> 1B 0F 8F 0F */
/* <IFS/IS4> <IFS/IS4> 1C 1C 1C 1C */
/* <IGS/IS3> <IGS/IS3> 1D 1D 1D 1D */
/* <IRS/IS2> <IRS/IS2> 1E 1E 1E 1E */
/* <IUS/IS1> <IUS/IS1> 1F 1F 1F 1F */
/* <DS> <NUL> 20 00 80 00 */
/* <SOS> <SOH> 21 01 81 01 */
/* <FS> <STX> 22 02 82 02 */
/* <WUS> <ETX> 23 03 83 03 */
/* <BYP/INP> <EOT> 24 37 84 04 */
/* <LF> <ENQ> 25 2D 85 05 */
/* <ETB> <ETB> 26 26 17 17 */
/* <ESC> <ESC> 27 27 1B 1B */
/* <SA> <BS> 28 16 88 08 */
/* <SFE> <HT> 29 05 89 09 */
/* <SM/SW> <NL> 2A 15 8A 0A */
/* <CSP> <VT> 2B 0B 8B 0B */
/* <MFA> <FF> 2C 0C 8C 0C */
/* <ENQ> <ENQ> 2D 2D 05 05 */
/* <ACK> <ACK> 2E 2E 06 06 */
/* <BEL> <BEL> 2F 2F 07 07 */
/* (reserved) <DLE> 30 10 90 10 */
/* (reserved) <DC1> 31 11 91 11 */
/* <SYN> <SYN> 32 32 16 16 */
/* <IR> <DC3> 33 13 93 13 */
/* <PP> <DC4> 34 3C 94 14 */
/* <TRN> <NAK> 35 3D 95 15 */
/* <NBS> <SYN> 36 32 96 16 */
/* <EOT> <EOT> 37 37 04 04 */
/* <SBS> <CAN> 38 18 98 18 */
/* <IT> <EM> 39 19 99 19 */
/* <RFF> <SUB> 3A 3F 9A 1A */
/* <CU3> <ESC> 3B 27 9B 1B */
/* <DC4> <DC4> 3C 3C 14 14 */
/* <NAK> <NAK> 3D 3D 15 15 */
/* (reserved) <IRS/IS2> 3E 1E 9E 1E */
/* <SUB> <SUB> 3F 3F 1A 1A */
/* */
/* <space> <space> 40 40 20 20 */
/* <nobrk-sp> <space> 41 40 A0 20 */
/* <a-circum> <b> 42 82 E2 62 */
/* <a-diaere> <d> 43 84 E4 64 */
/* <a-grave> <grave> 44 79 E0 60 */
/* <a-acute> <a> 45 81 E1 61 */
/* <a-tilde> <c> 46 83 E3 63 */
/* <a-ring> <e> 47 85 E5 65 */
/* <c-cedilla><g> 48 87 E7 67 */
/* <n-tilde> <q> 49 98 F1 71 */
/* <cent-sign><quote> 4A 7F A2 22 */
/* <period> <period> 4B 4B 2E 2E */
/* <lt> <lt> 4C 4C 3C 3C */
/* <l-paren> <l-paren> 4D 4D 28 28 */
/* <plus> <plus> 4E 4E 2B 2B */
/* <ver-line> <ver-line> 4F 4F 7C 7C */
/* <ampersand><ampersand> 50 50 26 26 */
/* <e-acute> <i> 51 89 E9 69 */
/* <e-circum> <j> 52 91 EA 6A */
/* <e-diaere> <k> 53 92 EB 6B */
/* <e-grave> <h> 54 88 E8 68 */
/* <i-acute> <m> 55 94 ED 6D */
/* <i-circum> <n> 56 95 EE 6E */
/* <i-diaere> <o> 57 96 EF 6F */
/* <i-grave> <l> 58 93 EC 6C */
/* <s-sharp> <underscr> 59 6D DF 5F */
/* <exclama> <exclama> 5A 5A 21 21 */
/* <dollar> <dollar> 5B 5B 24 24 */
/* <asterisk> <asterisk> 5C 5C 2A 2A */
/* <r-paren> <r-paren> 5D 5D 29 29 */
/* <semicolon><semicolon> 5E 5E 3B 3B */
/* <circum> <circum> 5F 5F 5E 5E */
/* <hyphen> <hyphen> 60 60 2D 2D */
/* <slash> <slash> 61 61 2F 2F */
/* <A-circum> <B> 62 C2 C2 42 */
/* <A-diaere> <D> 63 C4 C4 44 */
/* <A-grave> <at> 64 7C C0 40 */
/* <A-acute> <A> 65 C1 C1 41 */
/* <A-tilde> <C> 66 C3 C3 43 */
/* <A-ring> <E> 67 C5 C5 45 */
/* <C-cedilla><G> 68 C7 C7 47 */
/* <N-tilde> <Q> 69 D8 D1 51 */
/* <brok-bar> <ampersand> 6A 50 A6 26 */
/* <comma> <comma> 6B 6B 2C 2C */
/* <percent> <percent> 6C 6C 25 25 */
/* <underscr> <underscr> 6D 6D 5F 5F */
/* <gt> <gt> 6E 6E 3E 3E */
/* <question> <question> 6F 6F 3F 3F */
/* <o-stroke> <x> 70 A7 F8 78 */
/* <E-acute> <I> 71 C9 C9 49 */
/* <E-circum> <J> 72 D1 CA 4A */
/* <E-diaere> <K> 73 D2 CB 4B */
/* <E-grave> <H> 74 C8 C8 48 */
/* <I-acute> <M> 75 D4 CD 4D */
/* <I-circum> <N> 76 D5 CE 4E */
/* <I-diaere> <O> 77 D6 CF 4F */
/* <I-grave> <L> 78 D3 CC 4C */
/* <grave> <grave> 79 79 60 60 */
/* <colon> <colon> 7A 7A 3A 3A */
/* <num-sign> <num-sign> 7B 7B 23 23 */
/* <at> <at> 7C 7C 40 40 */
/* <apostro> <apostro> 7D 7D 27 27 */
/* <eq> <eq> 7E 7E 3D 3D */
/* <quote> <quote> 7F 7F 22 22 */
/* <O-stroke> <X> 80 E7 D8 58 */
/* <a> <a> 81 81 61 61 */
/* <b> <b> 82 82 62 62 */
/* <c> <c> 83 83 63 63 */
/* <d> <d> 84 84 64 64 */
/* <e> <e> 85 85 65 65 */
/* <f> <f> 86 86 66 66 */
/* <g> <g> 87 87 67 67 */
/* <h> <h> 88 88 68 68 */
/* <i> <i> 89 89 69 69 */
/* <l-guille> <plus> 8A 4E AB 2B */
/* <r-guille> <semicolon> 8B 5E BB 3B */
/* <eth> <p> 8C 97 F0 70 */
/* <y-acute> <r-brace> 8D D0 FD 7D */
/* <thorn> <tilde> 8E A1 FE 7E */
/* <plusminus><one> 8F F1 B1 31 */
/* <degree> <zero> 90 F0 B0 30 */
/* <j> <j> 91 91 6A 6A */
/* <k> <k> 92 92 6B 6B */
/* <l> <l> 93 93 6C 6C */
/* <m> <m> 94 94 6D 6D */
/* <n> <n> 95 95 6E 6E */
/* <o> <o> 96 96 6F 6F */
/* <p> <p> 97 97 70 70 */
/* <q> <q> 98 98 71 71 */
/* <r> <r> 99 99 72 72 */
/* <fem-ind> <asterisk> 9A 5C AA 2A */
/* <mas-ind> <colon> 9B 7A BA 3A */
/* <ae> <f> 9C 86 E6 66 */
/* <cedilla> <eight> 9D F8 B8 38 */
/* <AE> <F> 9E C6 C6 46 */
/* <cur-sign> <dollar> 9F 5B A4 24 */
/* <mu> <five> A0 F5 B5 35 */
/* <tilde> <tilde> A1 A1 7E 7E */
/* <s> <s> A2 A2 73 73 */
/* <t> <t> A3 A3 74 74 */
/* <u> <u> A4 A4 75 75 */
/* <v> <v> A5 A5 76 76 */
/* <w> <w> A6 A6 77 77 */
/* <x> <x> A7 A7 78 78 */
/* <y> <y> A8 A8 79 79 */
/* <z> <z> A9 A9 7A 7A */
/* <inv-excl> <exclama> AA 5A A1 21 */
/* <inv-ques> <question> AB 6F BF 3F */
/* <Eth> <P> AC D7 D0 50 */
/* <l-brk> <l-brk> AD AD 5B 5B */
/* <Thorn> <circum> AE 5F DE 5E */
/* <register> <period> AF 4B AE 2E */
/* <not-sign> <comma> B0 6B AC 2C */
/* <pound> <num-sign> B1 7B A3 23 */
/* <yen> <percent> B2 6C A5 25 */
/* <mid-dot> <seven> B3 F7 B7 37 */
/* <copyright><r-paren> B4 5D A9 29 */
/* <section> <apostro> B5 7D A7 27 */
/* <paragraph><six> B6 F6 B6 36 */
/* <1/4> <lt> B7 4C BC 3C */
/* <1/2> <eq> B8 7E BD 3D */
/* <3/4> <gt> B9 6E BE 3E */
/* <Y acute> <r-brk> BA BD DD 5D */
/* <diaeresis><l-paren> BB 4D A8 28 */
/* <macron> <slash> BC 61 AF 2F */
/* <r-brk> <r-brk> BD BD 5D 5D */
/* <acute> <four> BE F4 B4 34 */
/* <multiply> <W> BF E6 D7 57 */
/* <l-brace> <l-brace> C0 C0 7B 7B */
/* <A> <A> C1 C1 41 41 */
/* <B> <B> C2 C2 42 42 */
/* <C> <C> C3 C3 43 43 */
/* <D> <D> C4 C4 44 44 */
/* <E> <E> C5 C5 45 45 */
/* <F> <F> C6 C6 46 46 */
/* <G> <G> C7 C7 47 47 */
/* <H> <H> C8 C8 48 48 */
/* <I> <I> C9 C9 49 49 */
/* <soft-hyp> <hyphen> CA 60 AD 2D */
/* <o-circum> <t> CB A3 F4 74 */
/* <o-diaere> <v> CC A5 F6 76 */
/* <o-grave> <r> CD 99 F2 72 */
/* <o-acute> <s> CE A2 F3 73 */
/* <o-tilde> <u> CF A4 F5 75 */
/* <r-brace> <r-brace> D0 D0 7D 7D */
/* <J> <J> D1 D1 4A 4A */
/* <K> <K> D2 D2 4B 4B */
/* <L> <L> D3 D3 4C 4C */
/* <M> <M> D4 D4 4D 4D */
/* <N> <N> D5 D5 4E 4E */
/* <O> <O> D6 D6 4F 4F */
/* <P> <P> D7 D7 50 50 */
/* <Q> <Q> D8 D8 51 51 */
/* <R> <R> D9 D9 52 52 */
/* <super-1> <nine> DA F9 B9 39 */
/* <u-circum> <l-brace> DB C0 FB 7B */
/* <u-diaere> <ver_line> DC 4F FC 7C */
/* <u-grave> <y> DD A8 F9 79 */
/* <u-acute> <z> DE A9 FA 7A */
/* <y-diaere> <DEL> DF 07 FF 7F */
/* <backslash><backslash> E0 E0 5C 5C */
/* <division> <w> E1 A6 F7 77 */
/* <S> <S> E2 E2 53 53 */
/* <T> <T> E3 E3 54 54 */
/* <U> <U> E4 E4 55 55 */
/* <V> <V> E5 E5 56 56 */
/* <W> <W> E6 E6 57 57 */
/* <X> <X> E7 E7 58 58 */
/* <Y> <Y> E8 E8 59 59 */
/* <Z> <Z> E9 E9 5A 5A */
/* <super-2> <two> EA F2 B2 32 */
/* <O-circum> <T> EB E3 D4 54 */
/* <O-diaere> <V> EC E5 D6 56 */
/* <O-grave> <R> ED D9 D2 52 */
/* <O-acute> <S> EE E2 D3 53 */
/* <O-tilde> <U> EF E4 D5 55 */
/* <zero> <zero> F0 F0 30 30 */
/* <one> <one> F1 F1 31 31 */
/* <two> <two> F2 F2 32 32 */
/* <three> <three> F3 F3 33 33 */
/* <four> <four> F4 F4 34 34 */
/* <five> <five> F5 F5 35 35 */
/* <six> <six> F6 F6 36 36 */
/* <seven> <seven> F7 F7 37 37 */
/* <eight> <eight> F8 F8 38 38 */
/* <nine> <nine> F9 F9 39 39 */
/* <super-3> <three> FA F3 B3 33 */
/* <U-circum> <l-brk> FB AD DB 5B */
/* <U-diaere> <backslash> FC E0 DC 5C */
/* <U-grave> <Y> FD E8 D9 59 */
/* <U-acute> <Z> FE E9 DA 5A */
/* <EO> <IUS/IS1> FF 1F 9F 1F */
/* */
/*********************************************************************/
_XOPEN_SOURCE の特殊な動作: toascii() 関数は、値 (c & 0x7f) を戻します。
_ALL_SOURCE の特殊な動作: 現行ロケールが単一バイト・ロケールではない (すなわち、mb_cur_max > 1) 場合には、toascii() は、errno を ENOSYS に設定し、-1 を戻します。 単一バイト・ロケールの場合には、toascii() は、c モジュロ 256 が現行ロケールの Latin 1 文字、<入力文字> のエンコードであり、同じまたは別の Latin 1 文字、<出力文字> の EBCDIC エンコードを現行ロケールに戻すものと想定します。ここで、<出力文字> は、toascii() が、ASCII プラットフォームの <入力文字> をマップする文字に対応しています。