Class CobolString

java.lang.Object
jp.osscons.opensourcecobol.libcobj.common.CobolString

public class CobolString extends Object
COBOLのSTRING文およびUNSTRING文の処理を実装するクラス。
libcobのstrings.cに対応する。
STRING文はstringInit→stringDelimited/stringAppendを繰り返し→stringFinishの順に、 UNSTRING文はunstringInit→unstringDelimited/unstringIntoを繰り返し→unstringTallying→unstringFinishの順に、 それぞれ静的メソッドを呼び出すことで実行される。
処理途中の状態(対象フィールド・オフセット・区切り文字など)はクラスの静的フィールドに保持される。
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    現在のスレッドに紐づく作業状態を破棄する。実行単位の終了時に呼び出す。
    static void
    stringAppend(int src)
    STRING文の送り出し元を連結する。送り出し元が省略された場合のオーバーロード。
    整数のダミー引数を受け取ってstringAppend(AbstractCobolField)へ委譲する。
    static void
    STRING文の送り出し元フィールドを連結先へ連結する。
    区切り文字(stringDlm)が設定されている場合は、送り出し元の先頭から区切り文字が現れる手前までを連結対象とする。
    連結先の残り領域に収まらない場合は収まる分だけ連結し、オーバーフロー例外を設定する。
    すでに例外が発生している場合は何も行わない。
    static void
    stringDelimited(int dlm)
    STRING文の区切り文字を設定する。区切り文字が省略された場合(DELIMITED BY SIZE相当)のオーバーロード。
    整数のダミー引数を受け取ってstringDelimited(AbstractCobolField)へ委譲する。
    static void
    STRING文の区切り文字(DELIMITED BY)を設定する。
    以降のstringAppend(AbstractCobolField)で連結する送り出し元から、この区切り文字までの部分を連結対象とする。
    連結先が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。
    static void
    STRING文の処理を終了する。
    連結先が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。
    static void
    stringInit(int dst, int ptr)
    STRING文の処理を開始する。連結先・文字位置の両フィールドが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    STRING文の処理を開始する。連結先フィールドが省略された場合のオーバーロード。
    連結先(dst)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    STRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
    文字位置(ptr)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    STRING文の処理を開始する。
    連結先フィールドと文字位置フィールドを保持して内部状態を初期化し、文字位置が指定されている場合は その値から書き込み開始オフセットを設定する。開始位置が連結先の範囲外であればオーバーフロー例外を設定する。
    連結先が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。
    static void
    unstringDelimited(int dlm, int all)
    UNSTRING文の区切り文字を追加する。区切り文字が省略された場合のオーバーロード。
    整数のダミー引数を受け取ってunstringDelimited(AbstractCobolField, int)へ委譲する。
    static void
    UNSTRING文の区切り文字(DELIMITED BY)を1個、区切り文字リストへ追加する。
    分解対象が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。 全角空白の場合はさらに全角ブランクの区切り文字も追加する。
    allが0以外の場合はDELIMITED BY ALL指定であり、連続する区切り文字をまとめて1個の区切りとして扱う。
    static void
    UNSTRING文の処理を終了する。
    分解対象にまだ読み込んでいない部分が残っている場合はオーバーフロー例外を設定する。
    分解対象が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。
    static void
    unstringInit(int src, int ptr, int numDlm)
    UNSTRING文の処理を開始する。分解対象・文字位置の両フィールドが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。
    static void
    unstringInit(int src, AbstractCobolField ptr, int numDlm)
    UNSTRING文の処理を開始する。分解対象フィールドが省略された場合のオーバーロード。
    分解対象(src)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。
    static void
    unstringInit(AbstractCobolField src, int ptr, int numDlm)
    UNSTRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
    文字位置(ptr)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。
    static void
    UNSTRING文の処理を開始する。
    分解対象フィールドと文字位置フィールドを保持して内部状態を初期化し、区切り文字を格納するリスト(dlmList)を 必要な個数だけ確保する。文字位置が指定されている場合はその値から読み込み開始オフセットを設定し、 開始位置が分解対象の範囲外であればオーバーフロー例外を設定する。
    分解対象が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。
    static void
    unstringInto(int dst, int dlm, int cnt)
    UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納・文字数のすべてが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    unstringInto(int dst, int dlm, AbstractCobolField cnt)
    UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納フィールドが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    unstringInto(int dst, AbstractCobolField dlm, int cnt)
    UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・文字数フィールドが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    UNSTRING文の分解結果を受け取り側へ格納する。受け取り側フィールドが省略された場合のオーバーロード。
    整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    unstringInto(AbstractCobolField dst, int dlm, int cnt)
    UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納・文字数の両フィールドが省略された場合のオーバーロード。
    いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納フィールドが省略された場合のオーバーロード。
    整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    UNSTRING文の分解結果を受け取り側へ格納する。文字数(COUNT IN)が省略された場合のオーバーロード。
    整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
    static void
    UNSTRING文の分解結果を1個の受け取り側フィールドへ格納する。
    現在のオフセットから分解対象を走査し、登録された区切り文字のいずれかが見つかればその手前までを、 見つからなければ残り全体を受け取り側へ転記する。区切り文字が登録されていない場合は受け取り側の桁数分を転記する。
    ALL指定の区切り文字では、連続する同一の区切り文字をまとめて読み飛ばす。
    区切り文字格納フィールドが指定されていれば、一致した区切り文字(なければ数字項目はゼロ、それ以外は空白)を転記する。
    文字数フィールドが指定されていれば、転記した文字数(日本語項目では文字単位に換算)を設定する。
    すでに例外が発生している場合、または読み込み位置が分解対象の範囲外の場合は何も行わない。
    static void
    UNSTRING文のTALLYING IN処理。集計先フィールドが省略された場合のオーバーロード。
    整数のダミー引数を受け取り、何も行わない。
    static void
    UNSTRING文のTALLYING IN処理を行う。
    これまでに分解した部分文字列の個数(unstringCount)を、集計先フィールドへ加算する。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CobolString

      public CobolString()
  • Method Details

    • resetThreadState

      public static void resetThreadState()
      現在のスレッドに紐づく作業状態を破棄する。実行単位の終了時に呼び出す。
    • stringInit

      public static void stringInit(int dst, AbstractCobolField ptr)
      STRING文の処理を開始する。連結先フィールドが省略された場合のオーバーロード。
      連結先(dst)が指定されない場合に、整数のダミー引数を受け取ってstringInit(AbstractCobolField, AbstractCobolField)へ委譲する。
      Parameters:
      dst - 連結先フィールドが省略されたことを表すダミー引数
      ptr - 文字位置(WITH POINTER)フィールド
    • stringInit

      public static void stringInit(AbstractCobolField dst, int ptr)
      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

      public static void stringInit(AbstractCobolField dst, AbstractCobolField ptr)
      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

      public static void stringDelimited(AbstractCobolField dlm)
      STRING文の区切り文字(DELIMITED BY)を設定する。
      以降のstringAppend(AbstractCobolField)で連結する送り出し元から、この区切り文字までの部分を連結対象とする。
      連結先が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。
      Parameters:
      dlm - 区切り文字フィールド。区切り文字を指定しない(全体を連結する)場合はnull
    • stringAppend

      public static void stringAppend(int src)
      STRING文の送り出し元を連結する。送り出し元が省略された場合のオーバーロード。
      整数のダミー引数を受け取ってstringAppend(AbstractCobolField)へ委譲する。
      Parameters:
      src - 送り出し元フィールドが省略されたことを表すダミー引数
    • stringAppend

      public static void stringAppend(AbstractCobolField src)
      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

      public static void unstringInit(AbstractCobolField src, int ptr, int numDlm)
      UNSTRING文の処理を開始する。文字位置フィールドが省略された場合のオーバーロード。
      文字位置(ptr)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。
      Parameters:
      src - 分解対象(送り出し元)フィールド
      ptr - 文字位置フィールドが省略されたことを表すダミー引数
      numDlm - 区切り文字の個数
    • unstringInit

      public static void unstringInit(int src, AbstractCobolField ptr, int numDlm)
      UNSTRING文の処理を開始する。分解対象フィールドが省略された場合のオーバーロード。
      分解対象(src)に整数のダミー引数を受け取ってunstringInit(AbstractCobolField, AbstractCobolField, int)へ委譲する。
      Parameters:
      src - 分解対象フィールドが省略されたことを表すダミー引数
      ptr - 文字位置(WITH POINTER)フィールド
      numDlm - 区切り文字の個数
    • unstringInit

      public static void unstringInit(AbstractCobolField src, AbstractCobolField ptr, int numDlm)
      UNSTRING文の処理を開始する。
      分解対象フィールドと文字位置フィールドを保持して内部状態を初期化し、区切り文字を格納するリスト(dlmList)を 必要な個数だけ確保する。文字位置が指定されている場合はその値から読み込み開始オフセットを設定し、 開始位置が分解対象の範囲外であればオーバーフロー例外を設定する。
      分解対象が日本語項目の場合はオフセットを2倍(バイト単位)に補正する。
      Parameters:
      src - 分解対象(送り出し元)フィールド
      ptr - 文字位置(WITH POINTER)フィールド。省略時はnull
      numDlm - 区切り文字(DELIMITED BY)の個数
    • unstringDelimited

      public static void unstringDelimited(int dlm, int all)
      UNSTRING文の区切り文字を追加する。区切り文字が省略された場合のオーバーロード。
      整数のダミー引数を受け取ってunstringDelimited(AbstractCobolField, int)へ委譲する。
      Parameters:
      dlm - 区切り文字が省略されたことを表すダミー引数
      all - DELIMITED BY ALL指定の有無を表す値
    • unstringDelimited

      public static void unstringDelimited(AbstractCobolField dlm, int all)
      UNSTRING文の区切り文字(DELIMITED BY)を1個、区切り文字リストへ追加する。
      分解対象が日本語項目の場合は、引用符・空白・ゼロの定数を対応する全角の定数に置き換える。 全角空白の場合はさらに全角ブランクの区切り文字も追加する。
      allが0以外の場合はDELIMITED BY ALL指定であり、連続する区切り文字をまとめて1個の区切りとして扱う。
      Parameters:
      dlm - 区切り文字フィールド
      all - DELIMITED BY ALL指定の有無を表す値
    • unstringInto

      public static void unstringInto(AbstractCobolField dst, AbstractCobolField dlm, int cnt)
      UNSTRING文の分解結果を受け取り側へ格納する。文字数(COUNT IN)が省略された場合のオーバーロード。
      整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
      Parameters:
      dst - 受け取り側(INTO)フィールド
      dlm - 区切り文字を格納する(DELIMITER IN)フィールド
      cnt - 文字数フィールドが省略されたことを表すダミー引数
    • unstringInto

      public static void unstringInto(AbstractCobolField dst, int dlm, AbstractCobolField cnt)
      UNSTRING文の分解結果を受け取り側へ格納する。区切り文字格納フィールドが省略された場合のオーバーロード。
      整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
      Parameters:
      dst - 受け取り側(INTO)フィールド
      dlm - 区切り文字格納フィールドが省略されたことを表すダミー引数
      cnt - 文字数を格納する(COUNT IN)フィールド
    • unstringInto

      public static void unstringInto(AbstractCobolField dst, int dlm, int cnt)
      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

      public static void unstringInto(int dst, AbstractCobolField dlm, int cnt)
      UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・文字数フィールドが省略された場合のオーバーロード。
      いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
      Parameters:
      dst - 受け取り側フィールドが省略されたことを表すダミー引数
      dlm - 区切り文字を格納する(DELIMITER IN)フィールド
      cnt - 文字数フィールドが省略されたことを表すダミー引数
    • unstringInto

      public static void unstringInto(int dst, int dlm, AbstractCobolField cnt)
      UNSTRING文の分解結果を受け取り側へ格納する。受け取り側・区切り文字格納フィールドが省略された場合のオーバーロード。
      いずれも整数のダミー引数を受け取ってunstringInto(AbstractCobolField, AbstractCobolField, AbstractCobolField)へ委譲する。
      Parameters:
      dst - 受け取り側フィールドが省略されたことを表すダミー引数
      dlm - 区切り文字格納フィールドが省略されたことを表すダミー引数
      cnt - 文字数を格納する(COUNT IN)フィールド
    • unstringInto

      public static void unstringInto(int dst, AbstractCobolField dlm, AbstractCobolField cnt)
      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)フィールド。省略時はnull
      cnt - 転記した文字数を格納する(COUNT IN)フィールド。省略時はnull
    • unstringTallying

      public static void unstringTallying(int f) throws CobolStopRunException
      UNSTRING文のTALLYING IN処理。集計先フィールドが省略された場合のオーバーロード。
      整数のダミー引数を受け取り、何も行わない。
      Parameters:
      f - 集計先フィールドが省略されたことを表すダミー引数
      Throws:
      CobolStopRunException - 実行が停止された場合
    • unstringTallying

      public static void unstringTallying(AbstractCobolField f) throws CobolStopRunException
      UNSTRING文のTALLYING IN処理を行う。
      これまでに分解した部分文字列の個数(unstringCount)を、集計先フィールドへ加算する。
      Parameters:
      f - 分解した部分文字列の個数を加算する(TALLYING IN)フィールド
      Throws:
      CobolStopRunException - 実行が停止された場合
    • unstringFinish

      public static void unstringFinish()
      UNSTRING文の処理を終了する。
      分解対象にまだ読み込んでいない部分が残っている場合はオーバーフロー例外を設定する。
      分解対象が日本語項目の場合は最終オフセットをバイト単位から文字単位に戻し、文字位置(WITH POINTER)フィールドが 指定されていれば、次の文字位置(オフセット+1)を書き戻す。