Class CobolString
java.lang.Object
jp.osscons.opensourcecobol.libcobj.common.CobolString
COBOLのSTRING文およびUNSTRING文の処理を実装するクラス。
libcobのstrings.cに対応する。
STRING文は
処理途中の状態(対象フィールド・オフセット・区切り文字など)はクラスの静的フィールドに保持される。
libcobのstrings.cに対応する。
STRING文は
stringInit→stringDelimited/stringAppendを繰り返し→stringFinishの順に、
UNSTRING文はunstringInit→unstringDelimited/unstringIntoを繰り返し→unstringTallying→unstringFinishの順に、
それぞれ静的メソッドを呼び出すことで実行される。処理途中の状態(対象フィールド・オフセット・区切り文字など)はクラスの静的フィールドに保持される。
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void現在のスレッドに紐づく作業状態を破棄する。実行単位の終了時に呼び出す。static voidstringAppend(int src) STRING文の送り出し元を連結する。送り出し元が省略された場合のオーバーロード。
整数のダミー引数を受け取ってstringAppend(AbstractCobolField)へ委譲する。static voidSTRING文の送り出し元フィールドを連結先へ連結する。
区切り文字(stringDlm)が設定されている場合は、送り出し元の先頭から区切り文字が現れる手前までを連結対象とする。
連結先の残り領域に収まらない場合は収まる分だけ連結し、オーバーフロー例外を設定する。
すでに例外が発生している場合は何も行わない。static voidstringDelimited(int dlm) STRING文の区切り文字を設定する。区切り文字が省略された場合(DELIMITED BY SIZE相当)のオーバーロード。
整数のダミー引数を受け取ってstringDelimited(AbstractCobolField)へ委譲する。static voidSTRING文の区切り文字(DELIMITED BY)を設定する。
以降のstringAppend(AbstractCobolField)で連結する送り出し元から、この区切り文字までの部分を連結対象とする。
連結先が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。static voidSTRING文の処理を終了する。
連結先が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。static voidstringInit(int dst, int ptr) STRING文の処理を開始する。連結先・文字位置の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。static voidstringInit(int dst, AbstractCobolField ptr) STRING文の処理を開始する。連結先フィールドが省略された場合のオーバーロード。
連結先(dst)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。static voidstringInit(AbstractCobolField dst, int ptr) STRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
文字位置(ptr)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。static voidstringInit(AbstractCobolField dst, AbstractCobolField ptr) STRING文の処理を開始する。
連結先フィールドと文字位置フィールドを保持して内部状態を初期化し、文字位置が指定されている場合は その値から書き込み開始オフセットを設定する。開始位置が連結先の範囲外であればオーバーフロー例外を設定する。
連結先が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。static voidunstringDelimited(int dlm, int all) UNSTRING文の区切り文字を追加する。区切り文字が省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringDelimited(AbstractCobolField, int)へ委譲する。static voidunstringDelimited(AbstractCobolField dlm, int all) UNSTRING文の区切り文字(DELIMITED BY)を1個、区切り文字リストへ追加する。
分解対象が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。 全角空白の場合はさらに全角ブランクの区切り文字も追加する。
allが0以外の場合はDELIMITED BY ALL指定であり、連続する区切り文字をまとめて1個の区切りとして扱う。static voidUNSTRING文の処理を終了する。
分解対象にまだ読み込んでいない部分が残っている場合はオーバーフロー例外を設定する。
分解対象が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。static voidunstringInit(int src, int ptr, int numDlm) UNSTRING文の処理を開始する。分解対象・文字位置の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。static voidunstringInit(int src, AbstractCobolField ptr, int numDlm) UNSTRING文の処理を開始する。分解対象フィールドが省略された場合のオーバーロード。
分解対象(src)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。static voidunstringInit(AbstractCobolField src, int ptr, int numDlm) UNSTRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
文字位置(ptr)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。static voidunstringInit(AbstractCobolField src, AbstractCobolField ptr, int numDlm) UNSTRING文の処理を開始する。
分解対象フィールドと文字位置フィールドを保持して内部状態を初期化し、区切り文字を格納するリスト(dlmList)を 必要な個数だけ確保する。文字位置が指定されている場合はその値から読み込み開始オフセットを設定し、 開始位置が分解対象の範囲外であればオーバーフロー例外を設定する。
分解対象が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。static voidunstringInto(int dst, int dlm, int cnt) UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納・文字数のすべてが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(int dst, int dlm, AbstractCobolField cnt) UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(int dst, AbstractCobolField dlm, int cnt) UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・文字数フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(int dst, AbstractCobolField dlm, AbstractCobolField cnt) UNSTRING文の分解結果を受け取り側へ格納する。受け取り側フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(AbstractCobolField dst, int dlm, int cnt) UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納・文字数の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(AbstractCobolField dst, int dlm, AbstractCobolField cnt) UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(AbstractCobolField dst, AbstractCobolField dlm, int cnt) UNSTRING文の分解結果を受け取り側へ格納する。文字数(COUNT IN)が省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。static voidunstringInto(AbstractCobolField dst, AbstractCobolField dlm, AbstractCobolField cnt) UNSTRING文の分解結果を1個の受け取り側フィールドへ格納する。
現在のオフセットから分解対象を走査し、登録された区切り文字のいずれかが見つかればその手前までを、 見つからなければ残り全体を受け取り側へ転記する。区切り文字が登録されていない場合は受け取り側の桁数分を転記する。
ALL指定の区切り文字では、連続する同一の区切り文字をまとめて読み飛ばす。
区切り文字格納フィールドが指定されていれば、一致した区切り文字(なければ数字項目はゼロ、それ以外は空白)を転記する。
文字数フィールドが指定されていれば、転記した文字数(日本語項目では文字単位に換算)を設定する。
すでに例外が発生している場合、または読み込み位置が分解対象の範囲外の場合は何も行わない。static voidunstringTallying(int f) UNSTRING文のTALLYING IN処理。集計先フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取り、何も行わない。static voidUNSTRING文のTALLYING IN処理を行う。
これまでに分解した部分文字列の個数(unstringCount)を、集計先フィールドへ加算する。
-
Constructor Details
-
CobolString
public CobolString()
-
-
Method Details
-
resetThreadState
public static void resetThreadState()現在のスレッドに紐づく作業状態を破棄する。実行単位の終了時に呼び出す。 -
stringInit
STRING文の処理を開始する。連結先フィールドが省略された場合のオーバーロード。
連結先(dst)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 連結先フィールドが省略されたことを表すダミー引数ptr- 文字位置(WITH POINTER)フィールド
-
stringInit
STRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
文字位置(ptr)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 連結先(INTO)フィールドptr- 文字位置フィールドが省略されたことを表すダミー引数
-
stringInit
public static void stringInit(int dst, int ptr) STRING文の処理を開始する。連結先・文字位置の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 連結先フィールドが省略されたことを表すダミー引数ptr- 文字位置フィールドが省略されたことを表すダミー引数
-
stringInit
STRING文の処理を開始する。
連結先フィールドと文字位置フィールドを保持して内部状態を初期化し、文字位置が指定されている場合は その値から書き込み開始オフセットを設定する。開始位置が連結先の範囲外であればオーバーフロー例外を設定する。
連結先が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。- Parameters:
dst- 連結先(INTO)フィールドptr- 文字位置(WITH POINTER)フィールド。省略時はnull
-
stringDelimited
public static void stringDelimited(int dlm) STRING文の区切り文字を設定する。区切り文字が省略された場合(DELIMITED BY SIZE相当)のオーバーロード。
整数のダミー引数を受け取ってstringDelimited(AbstractCobolField)へ委譲する。- Parameters:
dlm- 区切り文字が省略されたことを表すダミー引数
-
stringDelimited
STRING文の区切り文字(DELIMITED BY)を設定する。
以降のstringAppend(AbstractCobolField)で連結する送り出し元から、この区切り文字までの部分を連結対象とする。
連結先が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。- Parameters:
dlm- 区切り文字フィールド。区切り文字を指定しない(全体を連結する)場合はnull
-
stringAppend
public static void stringAppend(int src) STRING文の送り出し元を連結する。送り出し元が省略された場合のオーバーロード。
整数のダミー引数を受け取ってstringAppend(AbstractCobolField)へ委譲する。- Parameters:
src- 送り出し元フィールドが省略されたことを表すダミー引数
-
stringAppend
STRING文の送り出し元フィールドを連結先へ連結する。
区切り文字(stringDlm)が設定されている場合は、送り出し元の先頭から区切り文字が現れる手前までを連結対象とする。
連結先の残り領域に収まらない場合は収まる分だけ連結し、オーバーフロー例外を設定する。
すでに例外が発生している場合は何も行わない。- Parameters:
src- 連結する送り出し元フィールド
-
stringFinish
public static void stringFinish()STRING文の処理を終了する。
連結先が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。 -
unstringInit
public static void unstringInit(int src, int ptr, int numDlm) UNSTRING文の処理を開始する。分解対象・文字位置の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。- Parameters:
src- 分解対象フィールドが省略されたことを表すダミー引数ptr- 文字位置フィールドが省略されたことを表すダミー引数numDlm- 区切り文字の個数
-
unstringInit
UNSTRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
文字位置(ptr)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。- Parameters:
src- 分解対象(送り出し元)フィールドptr- 文字位置フィールドが省略されたことを表すダミー引数numDlm- 区切り文字の個数
-
unstringInit
UNSTRING文の処理を開始する。分解対象フィールドが省略された場合のオーバーロード。
分解対象(src)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。- Parameters:
src- 分解対象フィールドが省略されたことを表すダミー引数ptr- 文字位置(WITH POINTER)フィールドnumDlm- 区切り文字の個数
-
unstringInit
UNSTRING文の処理を開始する。
分解対象フィールドと文字位置フィールドを保持して内部状態を初期化し、区切り文字を格納するリスト(dlmList)を 必要な個数だけ確保する。文字位置が指定されている場合はその値から読み込み開始オフセットを設定し、 開始位置が分解対象の範囲外であればオーバーフロー例外を設定する。
分解対象が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。- Parameters:
src- 分解対象(送り出し元)フィールドptr- 文字位置(WITH POINTER)フィールド。省略時はnullnumDlm- 区切り文字(DELIMITED BY)の個数
-
unstringDelimited
public static void unstringDelimited(int dlm, int all) UNSTRING文の区切り文字を追加する。区切り文字が省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringDelimited(AbstractCobolField, int)へ委譲する。- Parameters:
dlm- 区切り文字が省略されたことを表すダミー引数all- DELIMITED BY ALL指定の有無を表す値
-
unstringDelimited
UNSTRING文の区切り文字(DELIMITED BY)を1個、区切り文字リストへ追加する。
分解対象が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。 全角空白の場合はさらに全角ブランクの区切り文字も追加する。
allが0以外の場合はDELIMITED BY ALL指定であり、連続する区切り文字をまとめて1個の区切りとして扱う。- Parameters:
dlm- 区切り文字フィールドall- DELIMITED BY ALL指定の有無を表す値
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。文字数(COUNT IN)が省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側(INTO)フィールドdlm- 区切り文字を格納する(DELIMITER IN)フィールドcnt- 文字数フィールドが省略されたことを表すダミー引数
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側(INTO)フィールドdlm- 区切り文字格納フィールドが省略されたことを表すダミー引数cnt- 文字数を格納する(COUNT IN)フィールド
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納・文字数の両フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側(INTO)フィールドdlm- 区切り文字格納フィールドが省略されたことを表すダミー引数cnt- 文字数フィールドが省略されたことを表すダミー引数
-
unstringInto
public static void unstringInto(int dst, int dlm, int cnt) UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納・文字数のすべてが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側フィールドが省略されたことを表すダミー引数dlm- 区切り文字格納フィールドが省略されたことを表すダミー引数cnt- 文字数フィールドが省略されたことを表すダミー引数
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・文字数フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側フィールドが省略されたことを表すダミー引数dlm- 区切り文字を格納する(DELIMITER IN)フィールドcnt- 文字数フィールドが省略されたことを表すダミー引数
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納フィールドが省略された場合のオーバーロード。
いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側フィールドが省略されたことを表すダミー引数dlm- 区切り文字格納フィールドが省略されたことを表すダミー引数cnt- 文字数を格納する(COUNT IN)フィールド
-
unstringInto
UNSTRING文の分解結果を受け取り側へ格納する。受け取り側フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。- Parameters:
dst- 受け取り側フィールドが省略されたことを表すダミー引数dlm- 区切り文字を格納する(DELIMITER IN)フィールドcnt- 文字数を格納する(COUNT IN)フィールド
-
unstringInto
public static void unstringInto(AbstractCobolField dst, AbstractCobolField dlm, AbstractCobolField cnt) UNSTRING文の分解結果を1個の受け取り側フィールドへ格納する。
現在のオフセットから分解対象を走査し、登録された区切り文字のいずれかが見つかればその手前までを、 見つからなければ残り全体を受け取り側へ転記する。区切り文字が登録されていない場合は受け取り側の桁数分を転記する。
ALL指定の区切り文字では、連続する同一の区切り文字をまとめて読み飛ばす。
区切り文字格納フィールドが指定されていれば、一致した区切り文字(なければ数字項目はゼロ、それ以外は空白)を転記する。
文字数フィールドが指定されていれば、転記した文字数(日本語項目では文字単位に換算)を設定する。
すでに例外が発生している場合、または読み込み位置が分解対象の範囲外の場合は何も行わない。- Parameters:
dst- 受け取り側(INTO)フィールドdlm- 区切り文字を格納する(DELIMITER IN)フィールド。省略時はnullcnt- 転記した文字数を格納する(COUNT IN)フィールド。省略時はnull
-
unstringTallying
UNSTRING文のTALLYING IN処理。集計先フィールドが省略された場合のオーバーロード。
整数のダミー引数を受け取り、何も行わない。- Parameters:
f- 集計先フィールドが省略されたことを表すダミー引数- Throws:
CobolStopRunException- 実行が停止された場合
-
unstringTallying
UNSTRING文のTALLYING IN処理を行う。
これまでに分解した部分文字列の個数(unstringCount)を、集計先フィールドへ加算する。- Parameters:
f- 分解した部分文字列の個数を加算する(TALLYING IN)フィールド- Throws:
CobolStopRunException- 実行が停止された場合
-
unstringFinish
public static void unstringFinish()UNSTRING文の処理を終了する。
分解対象にまだ読み込んでいない部分が残っている場合はオーバーフロー例外を設定する。
分解対象が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。
-