NLS ライブラリーは,マルチバイト文字を含んでいる文字列が扱えるという点を除けば,Fortran 90 の関数とまったく等価な MBCS 版の関数をいくつか用意しています。これらのルーチンを次表に要約します。
MBCS Fortran 等価ルーチン
名前 | 手続の形式 | 説明 |
MBINCHARQQ | 関数 | INCHARQQ と同じですが,1 つのマルチバイト文字を一度に読み取ることができ,読み取ったバイト数を返します。 |
MBINDEX | 関数 | INDEX と同じですが,引数にマルチバイト文字を含めることができます。 |
MBLGE, MBLGT, MBLLE, MBLLT, MBLEQ, MBLNE | 関数 | LGE,LGT,LLE,LLT,および演算子 .EQ. と .NE. と等価ですが,引数にマルチバイト文字を含めることができます。 |
MBSCAN | 関数 | SCAN と同じですが,引数にマルチバイト文字を含めることができます。 |
MBVERIFY | 関数 | VERIFY と同じですが,引数にマルチバイト文字を含めることができます。 |
次の例は, Visual Fortran サンプルとして ...\DF98\SAMPLES\TUTORIALフォルダに MBCOMP.FOR として収録されています。
USE DFNLS INTEGER(4) i, len(7), infotype(7) CHARACTER(10) str(7) LOGICAL(4) log4 data infotype / NLS$LI_SDAYNAME1, NLS$LI_SDAYNAME2, & & NLS$LI_SDAYNAME3, NLS$LI_SDAYNAME4, & & NLS$LI_SDAYNAME5, NLS$LI_SDAYNAME6, & & NLS$LI_SDAYNAME7 / WRITE(*,*) 'NLSGetLocaleInfo' WRITE(*,*) '----------------' WRITE(*,*) ' ' WRITE(*,*) 'Getting the names of the days of the week...' DO i = 1, 7 len(i) = NLSGetLocaleInfo(infotype(i), str(i)) WRITE(*, 11) 'len/str/hex = ', len(i), str(i), str(i) END DO FORMAT (1X, A, I2, 2X, A10, 2X, '[', Z20, ']') WRITE(*,*) ' ' WRITE(*,*) 'Lexically comparing the names of the days...' DO i = 1, 6 log4 = MBLGE(str(i), str(i+1), NLS$IgnoreCase) WRITE(*, 12) 'Is day ', i, ' GT day ', i+1, '? Answer = ', log4 END DO FORMAT (1X, A, I1, A, I1, A, L1) WRITE(*,*) ' ' WRITE(*,*) 'Done.' END
次図は,地域が日本であるときに,上のコードが生成する出力を示しています。
MBCS 等価ルーチンの例