# UNSTRING文

説明書の該当箇所: 6.5.30 UNSTRING文

  UNSTRING文.cob        英数字の分解
  日本語UNSTRING.cob    同じことを日本語項目で行う

どちらも Standard 版で動きます。
正しく動くと 001 OK から順に番号付きの OK が並びます。

# 何をする文か

1つの項目を分解して、複数の項目に振り分けます。
STRING文 の逆です。

  UNSTRING send-a INTO rcv-1 rcv-2 rcv-3.

区切りを指定しないと、入れ先の桁数ぶんずつ機械的に切り分けます。

  "NAKANO/HACHIOJI//TAKAO"  を PIC X(10) の3項目へ
    → "NAKANO/HAC" "HIOJI//TAK" "AO********"

# DELIMITED BY — 区切りで分ける

  UNSTRING send-a
    DELIMITED BY "/"
    INTO rcv-1 COUNT IN ctr-1
         rcv-2 COUNT IN ctr-2
         rcv-3 COUNT IN ctr-3
    WITH POINTER ptr-a TALLYING IN tall-a.

  → "NAKANO" "HACHIOJI" "" のように区切りで分かれます

  DELIMITED BY   区切りに使う文字。ALL を付けると連続した区切りを1つと見ます
  COUNT IN       その項目に入った文字数が返ります
  POINTER        分解を始める位置。終わった位置が返ります
  TALLYING IN    いくつの項目に振り分けたかが返ります
  ON OVERFLOW    入れ先が足りなくなったときの分岐

区切りが2つ続いている "//" のところで空の項目ができる点が読みどころです。
ALL を付けた場合と付けない場合を並べてあるので、違いが分かります。

# 日本語版との違い

日本語版は、分解する項目も区切りも日本語定数 NC"..." で書きます。
全角文字は2桁を占めるので、POINTER の位置や COUNT に返る数の
数え方が英数字版と変わります。そこが見どころです。

# 関連

  6_5_25_STRING文\STRING文.cob    つなぐほうの文
