COBOL2002 ユーザーズガイド
レコード末尾の空白文字を出力する設定をしておくと,テキスト編成ファイルに対するWRITE文,およびREWRITE文でレコード末尾に半角空白文字(X'20')があった場合に,半角空白文字を削除しないで,そのままファイルに書き出せます。
レコード末尾の空白文字を出力する機能を使用するには,実行時環境変数CBLD_ファイル名にTEXTWRITESPACEを指定するか,実行時環境変数CBLTEXTWRITESPACEにYESを指定してください。
CBLD_ファイル名={ TEXTWRITESPACE | NOTEXTWRITESPACE }
CBLTEXTWRITESPACE=YES
表6-4 環境変数CBLTEXTWRITESPACEと環境変数CBLD_ファイル名の指定の組み合わせ
CBLTEXTWRITESPACE | CBLD_ファイル名 | ||
---|---|---|---|
TEXTWRITESPACE | NOTEXTWRITESPACE | 指定なし | |
YES | 有効 | 無効 | 有効 |
環境変数指定なし または YES以外 |
有効 | 無効 | 無効 |
'AAAAA'
FD FILE-1. 01 FILE-1-REC PIC X(10).
FD FILE-2 RECORD IS VARYING IN SIZE FROM 1 TO 10 CHARACTERS DEPENDING ON REC-LEN. 01 FILE-2-REC PIC X(10).
表6-5 レコード定義より短いレコードに対するREWRITE文の動作
内容と結果 | 機能の有効・無効状態 | |||
---|---|---|---|---|
有効 | 無効 | |||
固定長形式 | 可変長形式 | 固定長形式 | 可変長形式 | |
READ文実行後のレコード領域の内容 | 'AAAAA△△△△△' | 'AAAAA'※ | 'AAAAA△△△△△' | 'AAAAA'※ |
REWRITE文でレコードを'aaaaa'に更新するときの結果 | 半角空白を含む10バイトを更新しようとしてKCCC3521R-Sエラーとなる。 | 'aaaaa'に更新される。 | レコード末尾の半角空白は削除され,'aaaaa'で更新される(入力レコード長と等しくなる)。 |
環境変数CBLTEXTWRITESPACEと環境変数CBLD_ファイル名の指定を組み合わせて使用する場合の例を次に示します。
CBLTEXTWRITESPACE=YES CBLD_FILE_2=NOTEXTWRITESPACE
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE1. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-1 ASSIGN TO SYS100 ORGANIZATION IS LINE SEQUENTIAL. SELECT FILE-2 ASSIGN TO SYS200 ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE-1. 01 FILE-1-REC PIC X(10). FD FILE-2. 01 FILE-2-REC PIC X(10). PROCEDURE DIVISION. OPEN OUTPUT FILE-1 FILE-2. * レコード領域の後ろ5バイトは半角空白となる MOVE '12345' TO FILE-1-REC FILE-2-REC. * FILE-1は,CBLTEXTWRITESPACE=YESによって機能が有効なため,レ * コード末尾の半角空白は削除されない。 WRITE FILE-1-REC. * FILE-2は,CBLD_FILE_2=NOTEXTWRITESPACEによって機能が無効なた * め,レコード末尾の半角空白は削除される。 WRITE FILE-2-REC. :
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.