COBOLではデータの大きさが最初から決まっているため、そのデータの大きさが文字数の大きさとも言えるが、実際にやりたいことはそのデータに格納されている文字の長さではないでしょうか。
文字の大きさを測るには「FUNCTION TRIM」を使用して、空白スペースを削除して文字数をカウントすることで、実際の文字の長さを測ることができるようになります。今回は、「LENGTH」と「STORED-CHAR-LENGTH」を使用した2つの方法を説明する。
LENGTHを使用する
「FUNCTION LENGTH」を使用することで、さまざまな文字数を数えることができる。
ただ、「FUNCTION LENGTH」を使用しただけでは、変数の大きさを数えることになる。
つまり、3桁の数値が変数に入っていても、その変数が5桁の大きさであった場合には、空白のスペースも数え5となってしまう。
実際には空白の部分は数えず、数値や文字がある部分のみを数えたい。そのため、「FUNCTION TRIM」を使用し、空白部分を削除してカウントを行うようにする。
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INT PIC X(5).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE '123' TO INT.
DISPLAY FUNCTION LENGTH(INT). *> ① 5
DISPLAY FUNCTION LENGTH(FUNCTION TRIM(INT)). *> ② 3
以上のプログラムを実際に実行すると、
①の場合、「5」が出力されることになる。これは、INT変数の大きさを数えているからだ。
②の場合、「3」が出力されることになる。これは、「FUNCTION TRIM」でINT変数の空白部分を削除し、文字が存在する部分のみを数えているためだ。
つまり、「FUNCTION TRIM」を使用し、「FUNCTION LENGTH(FUNCTION TRIM(変数)」とすることで、変数の空白スペースを数えることなく、文字の数をカウントすることが可能になる。
FUNCTION TRIM についてはこちら。
STORED-CHAR-LENGTHを使用する
続いての文字数カウントの方法は「STORED-CHAR-LENGTH」を使用する方法である。
「STORED-CHAR-LENGTH」を使用することで、「FUNCTON TRIM」を使用することなく文字数を正確に数えることができる。
使用方法は以下の通り
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INT PIC X(5).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE '123' TO INT.
DISPLAY FUNCTION STORED-CHAR-LENGTH(INT).
「FUNCTION SORTED-CHAR-LENGTH」とするだけで、「3」が出力されることになる。
以上が文字数をカウントする方法です。様々な場面で使用してみてください。