opensource COBOL Programmer’s Guideopensource COBOLのコンパイラ構成ファイルに記載されているパラメータについて説明する。
opensource COBOLをインストールすると、デフォルトのコンパイラ構成ファイルが配置され、コンパイル時に参照されるようになっている。また、コンパイル時に「-conf」オプションを使用することで、参照するコンパイラ構成ファイルを変更することもできる。コンパイラ構成ファイルはリポジトリの「config」ディレクトリに格納されており、デフォルトで参照される「default.conf」のほかに以下のファイルが用意されている。
boundary-limit.confbs2000.confcobol85.confcobol2002.confdefault-en.confdefault-jp.confibm.confjp-compat.confmf.confmvs.confこれらのコンパイラ構成ファイルに含まれるパラメータの多くは「default.conf」の同一だが、値が異なる場合がある。
表8-5-パラメータ一覧
以下の表でコンフィグファイルにあるパラメータについての説明を記載する。デフォルト値は「default.conf」に基づいている。
| No | パラメータ名 | 設定できる値 | デフォルト値 | パラメータの説明 | 
|---|---|---|---|---|
| 1 | name | 任意の文字列 | OpenCOBOL | 設定ファイル名。 | 
| 2 | tab-width | 整数 | 8 | タブ文字を何文字分のスペースとして扱うかを決める。 | 
| 3 | text-column | 整数 | 72 | コードを何桁目まで記述できるかを決める。 | 
| 4 | default-organization | record-sequential, line-sequential | 
      record-sequential | 
      SELECTでORGANIZATIONが定義されていない場合に、ここにセットされている値をORGANIZATIONとして扱う。 | 
    
| 5 | assign-clause | cobol2002, mf, ibm, jph1 | 
      mf | 
      SELECT文のASSIGNの書き方で、IBMやMFの書き方が使えるようになる。 | 
    
| 6 | filename-mapping | yes, no | 
      yes | 
      ファイル名を環境変数から取得することができる。 | 
| 7 | pretty-display | yes, no | 
      yes | 
      USAGE BINARYで定義したデータ項目の表示を設定する。 | 
    
| 8 | auto-initialize | yes, no | 
      yes | 
      WORKING-STORAGE SECTIONでVALUEを使って初期化していなくても自動で初期値を付与する。 | 
    
| 9 | complex-odo | yes, no | 
      no | 
      yesの場合は、集団項目の中(先頭や末尾ではなく)にOCCURS ~ DEPENDING ONがあってもコンパイルが通る。 | 
    
| 10 | indirect-redefines | yes, no | 
      no | 
      REDEFINESを多段階で定義できるようにする。 | 
    
| 11 | binary-size | 2-4-8, 1-2-4-8, 1--8 | 
      1-2-4-8 | 
      PIC 9(n) BINARYの変数が確保するバイト数を設定する。 | 
    
| 12 | binary-truncate | yes, no | 
      yes | 
      オーバーフロー時の切り捨てが発生した場合に例外を発生させる。 | 
| 13 | binary-byteorder | native, big-endian | 
      big-endian | 
      バイトの並びを設定する。 | 
| 14 | abort-on-io-exception | any, fatal, never | 
      any | 
      ファイル操作のエラーハンドリングのレベルを設定する。 | 
| 15 | larger-redefines-ok | yes, no | 
      no | 
      REDEFINESで定義した集団項目のサイズが元の集団項目のサイズを上回っている場合でもコンパイルできるようにする。 | 
    
| 16 | relaxed-syntax-check | yes, no | 
      no | 
      以下のMFの書き方を許容できるようにする。 ・ INPUT-OUTPUT SECTIONという記述がなくてもよい。・ FILE SECTIONという記述がなくてもよい。・ REDEFINESを書くときに、PIC X(n) REDEFINESのような書き方を許容する。 | 
    
| 17 | perform-osvs | yes, no | 
      no | 
      IBM OS/VS COBOLの方言を使えるようにする(PERFORMの扱い方が異なる)。 | 
| 18 | sticky-linkage | yes, no | 
      no | 
      LINKAGE SECTIONにあるデータがCALLの呼び出しごとに初期化されずに保持されるようになる。 | 
    
| 19 | assign_external | yes, no | 
      no | 
      対象のCOBOLプログラムのSELECT文のすべてのASSIGN句にEXTERNALが指定されているものとして扱うことができる。 | 
    
| 20 | relax-level-hierarchy | yes, no | 
      no | 
      データ項目の階層の数字の大小が逆になっていてもコンパイルが通るようにする。 | 
| 21 | author-paragraph | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      AUTHORパラグラフを有効にするか決める。 | 
    
| 22 | memory-size-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      OBJECT-COMPUTER節のMEMORY SIZE指定を有効にするか決める。 | 
    
| 23 | multiple-file-tape-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      I-O CONTROLのMULTIPLE FILE TAPE指定を有効にするか決める。 | 
    
| 24 | label-records-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      FILE CONTROLのFD句でLABEL RECORDSの指定を有効にするか決める。 | 
    
| 25 | value-of-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      FILE CONTROLのFD句でVALUE OF {WORD}を有効にするか決める。 | 
    
| 26 | data-records-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      FILE CONTROLのFD句でDATA RECORDを有効にするか決める。 | 
    
| 27 | top-level-occurs-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      skip | 
      01および77のデータ項目にOCCURSを使えるか決める。 | 
    
| 28 | synchronized-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      ok | 
      データ定義においてSYNCHRONIZEDを有効にするか決める。 | 
    
| 29 | goto-statement-without-name | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      GO TOのあとに何も指定しない書き方を有効にするか決める。 | 
    
| 30 | stop-literal-statement | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      STOP LITERALを有効にするかを設定する。 | 
    
| 31 | debugging-line | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      CONFIGURATION SECTIONのSOURCE-COMPUTERの指定で、WITH DEBUGGING MODEの記述を有効にするか決める。 | 
    
| 32 | padding-character-clause | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      SELECT文でPADDING CHARACTERの記述を有効にするか決める。 | 
    
| 33 | next-sentence-phrase | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      archaic | 
      NEXT SENTENCEを使えるかを決める。 | 
    
| 34 | eject-statement | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      skip | 
      EJECTを使えるか決める。 | 
    
| 35 | entry-statement | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      obsolete | 
      ENTRYを使えるか決める。 | 
    
| 36 | move-noninteger-to-alphanumeric | 同上 | error | 
      小数などの非整数を文字列型にMOVEできるようにする。 | 
    
| 37 | odo-without-to | ok, archaic, obsolete, skip, ignore, unconformable, error | 
      ok | 
      OCCURS ~ DEPENDING ONでTOを使って配列のサイズの最大値を定義していないときにエラーを出すようにする。 | 
    
| 38 | default-currency-symbol | 任意の1文字 | $ | 
      デフォルトの通貨記号($、\など)を設定できる。 | 
    
| 39 | max-alpha-character-data-size | 整数 | 2147483647 | PIC Xの最大サイズを設定する。 | 
    
| 40 | max-sjis-character-data-size | 整数 | 1073741823 | PIC Nの最大サイズを設定する。 | 
    
| 41 | max-utf8-character-data-size | 整数 | 715827882 | PIC Nの最大サイズを設定する。 | 
    
| 42 | c89-identifier-length-check | yes, no | 
      no | 
      PROGRAM-IDが31文字より多い場合に警告を出す。 | 
    
| 43 | allow-end-program-with-wrong-name | yes, no | 
      no | 
      PROGRAM-IDに書いてある単語とEND PROGRAMに書いてある単語が異なるような記述を許容する。 | 
    
| 44 | allow-missing-also-clause-in-evaluate | yes, no | 
      no | 
      EVALUATEの条件式でALSOが省略する記述を許容する。 | 
    
| 45 | allow-empty-imperative-statement | yes, no | 
      no | 
      IFやEVALUATEで空の無条件文を許容する。 | 
    
| 46 | enable-program-status-register | yes, no | 
      no | 
      PROGRAM-STATUSという特殊レジスタを使用できるようにする。 | 
    
| 47 | enable-sort-status-register | yes, no | 
      no | 
      SORT-STATUSという特殊レジスタを使用できるようにする。 | 
    
| 48 | enable-special-names-argument-clause | yes, no | 
      no | 
      SPECIAL-NAMESでARGUMENT-NUMBERとARGUMENT-VALUEを使えるようにする。 | 
    
| 49 | enable-special-names-environment-clause | yes, no | 
      no | 
      SPECIAL-NAMESでENVIRONMENT-NAMEとENVIRONMENT-VALUEを使えるようにする。 | 
    
| 50 | enable-leng-intrinsic-function | yes, no | 
      no | 
      組み込み関数FUNCTION LENGを使えるようにする。 | 
    
| 51 | enable-length-an-intrinsic-function | yes, no | 
      no | 
      組み込み関数FUNCTION LENGTH-ANを使えるようにする。 | 
    
| 52 | enable-national-intrinsic-function | yes, no | 
      no | 
      組み込み関数FUNCTION NATIONALを使えるようにする。 | 
    
| 53 | use-invalidkey-handler-on-status34 | yes, no | 
      no | 
      SAMファイルのREAD/WRITEでINVALID KEYの指定を可能にする。 | 
    
| 54 | cobol68-copy-in-data-description | yes, no | 
      no | 
      DATA DIVISIONにおいて、COBOL68スタイルのCOPYを使えるか決める。 | 
    
| 55 | switch-no-mnemonic | yes, no | 
      no | 
      SPECIAL-NAMESで設定するスイッチ名を別名がなくても参照可能にする。 | 
    
| 56 | allow-is-in-sort-key-spec | yes, no | 
      no | 
      SORTのKEY指定でKEY ISと書けるようにする。 | 
    
| 57 | allow-search-key-in-rhs | yes, no | 
      no | 
      SEARCH ALL文の検索条件の右辺にキー項目を記述できるようにする。 | 
    
| 58 | ignore-invalid-record-contains | yes, no | 
      no | 
      FD句のRECORD CONTAINSによるレコードのバイト数の制限を無視することができる。 | 
    
| 59 | enable-zero-division-error | yes, no | 
      no | 
      プログラムにゼロ除算があったときにコンパイルの段階でエラーを出す。 | 
| 60 | enable-check-subscript-out-of-bounds | yes, no | 
      no | 
      OCCURS ~ DEPENDING ONで定義した要素数以上の添え字にアクセスするコードがあった場合にコンパイルエラーを出す。 | 
    
| 61 | enable-expect-numeric-error | yes, no | 
      no | 
      文字列型から数値型へのMOVEがあった場合、コンパイルエラーを出す。 | 
| 62 | enable-expect-compute-string-error | yes, no | 
      no | 
      文字列と数値を計算しようとしたときにエラーを出す。 | 
| 63 | not-reserved | 任意の文字列 | CYCLE, NORMAL | 
      指定した文字列を予約語から一時的に除外する。 |