MBCS Fortran 等価ルーチン

NLS ライブラリーは,マルチバイト文字を含んでいる文字列が扱えるという点を除けば,Fortran 90 の関数とまったく等価な MBCS 版の関数をいくつか用意しています。これらのルーチンを次表に要約します。

MBCS Fortran 等価ルーチン

名前 手続の形式 説明
MBINCHARQQ 関数 INCHARQQ と同じですが,1 つのマルチバイト文字を一度に読み取ることができ,読み取ったバイト数を返します。
MBINDEX 関数 INDEX と同じですが,引数にマルチバイト文字を含めることができます。
MBLGE, MBLGT, MBLLE, MBLLT, MBLEQ, MBLNE 関数 LGELGTLLELLT,および演算子 .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 等価ルーチンの例