日本語DEC_COBOL_for_DEC_OSF/1_AXP____________ リリース・ノート 1994年10月 本書には,日本語DEC COBOL V2.1 for DEC OSF/1につ いての重要な事項が記載されています。たとえば,本 製品の機能の概説と制限事項,既知の問題点,修正され た問題点,日本語DEC COBOL for OpenVMS AXPおよび日 本語VAX COBOLとの相違点,RTLノート,デバッガ・ノー ト,ドキュメンテーション,およびトラブルシューティ ングについて示しています。 改訂/更新情報: 本書は初版です。 オペレーティング・システム: 日本語DEC OSF/1 V3.0以降 ソフトウェア・バージョン: 日本語DEC COBOL V2.1 for DEC OSF/1 AXP 日本ディジタル イクイップメント株式会社 __________________________________________________________ 1994年10月 本書の著作権は日本ディジタル イクイップメント株式会社(日本 DEC)が保有しており,本書中の解説および図,表は日本DECの文 書による許可なしに,その全体または一部を,いかなる場合にも 再版あるいは複製することを禁じます。 また,本書に記載されている事項は,予告なく変更されることが ありますので,あらかじめご承知おきください。万一,本書の記 述に誤りがあった場合でも,日本DECは一切その責任を負いかね ます。 本書で解説するソフトウェア(対象ソフトウェア)は,所定のライ センス契約が締結された場合に限り,その使用あるいは複製が許 可されます。 日本DECは,日本DECまたは日本DECの指定する会社から納入され た機器以外の機器で対象ソフトウェアを使用した場合,その性能 あるいは信頼性について一切責任を負いかねます。 (c) Digital Equipment Corporation Japan 1994. All Rights Reserved. Printed in Japan. 以下は他社の商標です。 OSFおよびOSF/1は米国Open Software Foundation社の商標で す。 ________________________________________________________________ 目次 1 リリースの概要.............................. 1 1.1 バージョン番号.......................... 3 1.1.1 コンパイラ............................ 3 1.1.2 実行時ライブラリ...................... 3 1.2 制限事項................................ 3 1.3 既知の問題点............................ 7 1.4 日本語DEC COBOL V2.0以降に修正された問題 点....................................... 13 1.5 日本語DEC COBOL V2.0までに修正された問題 点....................................... 21 1.6 日本語DEC COBOL for OpenVMS AXPおよび日 本語VAX COBOLとの相違点.................. 27 1.7 日本語DEC COBOLの新機能の詳細........... 45 2 日本語DEC COBOL実行時ライブラリのリリース・ ノート....................................... 47 2.1 修正された問題点........................ 47 2.2 既知の問題点............................ 47 3 問題の対処法................................ 50 4 デバッガ・ノート............................ 53 5 ドキュメント・リリース・ノート.............. 57 5.1 ドキュメントの変更および更新............ 57 iii ___________________________________________________________ 1 リリースの概要 本書には,日本語DEC COBOL V2.1 for DEC OSF/1 AXP (以下,日 本語DEC COBOLと記す)についての重要な事項が記載されていま す。たとえば,本製品の機能の概説と制限事項,既知の問題点, 修正された問題点,日本語DEC COBOL for OpenVMS AXPおよび日 本語VAX COBOLとの相違点,RTLノート,デバッガ・ノート,ドキ ュメンテーション,およびトラブルシューティングについて示し ています。 本製品は,コンパイラ本体および実行時ライブラリから構成され ます。これらは,本書で示した機能を実行したり問題が修正され た機能を使用するのに必要です。 _______________________ 注意 _______________________ 本書は,すべての日本語DEC COBOL V2.1ユーザを対象にし ています。 _____________________________________________________ 日本語DEC COBOL V2.1には,日本語DEC COBOL V1.1と同様に次の 機能があります。 o 高性能のネイティブなCOBOLコンパイラ。 日本語DEC COBOLは,日本語DEC COBOL for OpenVMS AXP, 日本語VAX COBOL,およびGEMコンパイラ・システムを基に開 発されたコンパイラです。 o 日本語DEC COBOL V1.1 for OpenVMS AXPで提供されたほと んどの機能。 日本語DEC COBOL V2.0 for OpenVMS AXPおよび日本語VAX COBOLとの相違点については,第1.6項の表を参照してくだ さい。 日本語DEC COBOL V2.1には,以下に示すような機能が新たに追加 されました。 o FUSE (-xrefおよび-xref_stdout)のサポート。 補足情報については第1.7項を参照してください。 o -noobjectのサポート。 補足情報については第1.7項を参照してください。 1 o COMP-5およびCOMP-Xデータ・タイプのサポート。 補足情報については第1.7項を参照してください。 o X/Openのファイル共用およびレコード・ロック機能のサポ ート。 補足情報については第1.7項を参照してください。 o VAX COBOL V5.0(標準版)またはそれ以降のバージョンで のサポートに類似した,-nationality japan, -standard mia,およびPIC Nを含む改良された国際化機能のサポート。 o ANSIラベルの磁気テープの読み書き機能のサポート。 このテープのサポートは,TK50およびTLZ06テープ・ドライ ブですでに確認されています。QIC形式のドライブは,ANSI ラベルのテープには使用できません。 o ビデオ・フォームの設計をより簡単に行うためのX/Open SCREEN SECTIONのサポート。 『DEC COBOL User Manual』の第11章を参照してください。 o 日本語VAX COBOLでサポートされているようなACCEPT /DISPLAY拡張のサポート。 o 複合キーのサポート。 新たにサポートされたこの機能の使用法については,『DEC COBOL User Manual』の第6章を参照してください。 o READ PRIORおよびSTART LESS命令のサポート。 『DEC COBOL User Manual』の第6章を参照してください。 o X3.23 1985-1989aに指定されたようなANSI内部関数モジュ ールのサポート。 詳細については,『DEC COBOL Reference Manual』の第7章 を参照してください。 o ACCEPTおよびDISPLAY命令の形式1におけるWITH CONVERSION のサポート。 o 日本語DEC OSF/1 V3.0またはそれ以降のシステム上で,日 本語DEC COBOLドライバ・プログラム内の-omをccに引き渡 す機能のサポート。 2 1.1 バージョン番号 1.1.1 コンパイラ バージョン番号の最後に付いている編集レベル番号は,コンパイ ラの更新番号を表します。バージョン番号は,コンパイラによっ て生成されるソース・リストの各ページの先頭に印字されます。 たとえば,次のような文字列が先頭行にあるとします。 DEC COBOL V2.1-509 この場合,コンパイラはバージョンが2.1で,編集番号が509で す。 1.1.2 実行時ライブラリ 実行時ライブラリのバージョン番号は2.1であり,編集番号は74 です。ライブラリ・アーカイブ・ファイルまたは共用オブジェク ト・ファイルに対して whatコマンドを使用すると,インストー ルされている実行時ライブラリのバージョンを確認できます。 % what /usr/lib/cmplrs/cobolrtl_210/libcob.a DEC Cobol RTL V2.1-74 1+ 5-jul-1994 This software was built on OSF1 V2.0 240 alpha 1.2 制限事項 __________________________________________________________ バージョン___制限内容_____________________________________ V2.1-509 日本語DEC COBOL V2.1 RTLをインストールしてい ない他のシステムに移送したいプログラムをリン クする場合,-non_sharedでリンクしなくてはなり ません。 V2.1-509 ANSIラベルの磁気テープを初期化するには,日本 語DEC OSF/1 V3.0またはそれ以降のシステムに提 供されたltfを使用しなければなりません。 3 __________________________________________________________ バージョン___制限内容_____________________________________ V2.1-509 使用しているアプリケーションがORGANIZATION INDEXEDファイルを用いている場合,サード・パー ティによる必須のソフトウェアについては『日本 語DEC COBOL V2.1 for DEC OSF/1 AXPをご使用の お客様へ』を参照してください。 V2.1-509 COBOLおよびCOBOL以外のオブジェクトまたはソー ス(あるいはその両方)を一緒に翻訳する際は,コ マンド行でCOBOLを先に指定しなければなりませ ん。そうしないと,その結果生成される実行可能 なプログラムに解析不可能なローダ・シンボルが 使用され実行できなくなります。 V2.1-509 作用対象が両方とも浮動小数点数(USAGE COMP-1ま たはCOMP-2)であったり値0を含む除算演算では, オプティマイザが翻訳時に値を確定できないため 除算演算のところでプログラムが終了し,次のよ うなエラー・メッセージを表示します。 Last chance handler: ... Last chance handler: internal exception: unwinding これは,浮動小数点数除算の0/0を0による除算と してAXPが処理しないためです。このような場合 は,例外を引き起こしたのは浮動小数点数除算だ ったことがCOBOL実行時シグナル・ハンドラにより 判定され,適切なメッセージが表示され,さらに 実行も継続されます。例外を引き起こした位置が シグナル・ハンドラにより正確に判定できない場 合には,上記のメッセージを表示してプログラム は強制終了します。 V2.1-509 UCXファイル・システムから提供されるファイル にCOBOLプログラムを通じてアクセスする場合, -nolockingフラグを使用して省略時のファイル・ ロックを解除しなくてはなりません。 4 __________________________________________________________ バージョン___制限内容_____________________________________ V2.1-509 stdoutまたはstderrにマップした装置からACCEPT 命令を実行した場合,およびstdinにマップした装 置に対してDISPLAY命令を実行した場合はCOBOLア プリケーションは強制終了します。 対応する環境変数をstdout, stderr,およびstdin 以外の装置に定義しておけば,上記の問題は発生 しません。 V2.1-509 UCXがV1.3からV2.0にバージョン・アップしたこ とに伴い,「入力ファイルの読込み」問題が生じ ました。V2.0ではエクスポート・オプションの DATA_CONVERSIONが省略時の設定により有効となり ます。新しい動作内容についてはUCXリリース・ノ ートに記述されていますが,概要は次のとおりで す。DATA_CONVERSIONが有効なとき,stream_LF以 外の順ファイルはREAD_ONLYアクセスを行うために 自動的にstream_LFファイルに変換されます。ここ で,ファイルは順次形式でディスク上に残される ことに注意してください。リモートNSFクライアン トに転送されたデータのみが変換されます。 元になるstream_LF以外の順ファイル(サーバ側)と 変換されたstream_LFファイル(クライアント側に あり,クライアントによりキャッシュされる)とで は,ファイルのサイズが異なります。 「入力ファイルの読込み」問題を回避するには, システム管理者にDATA_CONVERSIONオプションを無 効にしてもらってください。 V2.1-509 日本語DEC OSF/1では使用できてもUCX提供のディ スクでは不正と判断されるファイル名があります (例: a.dat.dat)。 5 __________________________________________________________ バージョン___制限内容_____________________________________ V2.1-509 NFSサーバがULTRIXシステムである場合,NFS提供 のディスク上にあるファイルに対してプログラム がアクセスするためには,V4.2またはそれ以降の ULTRIXロック・デーモンを実行していなければな りません。そうでない場合はプログラムがハング します。プロセスを中止するには,スーパユーザ 特権が必要です。 __________________________________________________________ 6 1.3 既知の問題点 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 日本語DEC OSF/1上の省略時設定によりけたよせ障 害があると,次のようなメッセージが表示されま す。 Unaligned access pid=13758 va=1400000fa pc=1200063b4 ... けたよせ障害は,COBOLプログラムで頻繁に起こる 可能性があります。中には日本語DEC COBOLの今後 のバージョンで修正されるものもありますが,そ れ以外のけたよせ障害はCOBOL固有のものです。 COBOL固有の障害の一例として,けたよせされてい ないデータを別のプログラムに渡すプログラムが あります。 これらのメッセージは,uacユーティリティ(man uac)を使用して消去できます。 V2.1-509 -names修飾子は,CALL定数文で参照する場合にし か有効ではありません。EXTERNAL属性を持つデー タ項目に対して使用しても何の効果もありませ ん。 V2.1-509 翻訳時にエラー・レベルの診断メッセージが検出 されると,ドライバはオブジェクト・リンクを行 いません。こういった状況でa.outファイルを作 成するには,次のように入力しなければなりませ ん。 % cobol -c /dcobol/test/dcb1798.cob % cobol dcb1798.o % a.out 7 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 呼出し先のプログラムのEXIT PROGRAM命令は PERFORM命令の範囲をリセットしません(COBOLの規 約ではEXIT PROGRAM命令の終了後に,プログラム に再入すると前回実行時のPERFORM命令の範囲は満 たされると指定しています)。しかし,いくつかの プログラムで誤ったRECACTPER実行時エラーが出る という問題は修正されています。 V2.1-509 浮動小数点定数がCOMP-1またはCOMP-2で表現可能 な最大値を超えると,情報メッセージが表示され ます。結果として得られる値が予期した値と一致 しないので,本来ならばE-レベルのメッセージが 表示されるべきです。 V2.1-509 極めてまれですが,-check performおよび-Oで 翻訳したプログラムによりコンパイラがループ 状態に陥ることがあります。-O0または-check noperformで翻訳すると,この問題は回避できま す。 V2.1-509 MOVE命令を使用して文字定数を数字データ項目に 転記しようとすると,翻訳時エラーとなるがメッ セージは表示されません。 8 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 大きな浮動小数点定数を次に示すいずれかの状況 で使用すると,間違った結果が生成されることが あります。 o 作用対象のうち1つまたは複数が定数である か,COMP-1またはCOMP-2以外の用途で使用さ れている算術文または算術式。 o 1つまたは複数の定数または作用対象が, COMP-1またはCOMP-2以外の用途で使用されて いる比較条件。 こういった1つまたは複数の算術式および(または) 比較式を含むCOBOL命令(例: IF命令,EVALUATE命 令,またはPERFORM命令)は,間違った結果を生成 します。 V2.1-509 DEC FUSE環境において(-xrefまたは-xref_stdout コンパイラ・オプションを使用して)翻訳すると, あるCOBOLプログラムで次に示す回復不能診断メッ セージが表示されることがあります。 cobol: Severe: Fatal error -7 returned from a cross-referencing library procedure PROGRAM-ID命令またはEND PROGRAM命令を使用し たコピー・ファイルにそのプログラム全体が含ま れていなければならないという規則を守らない限 り,このエラーは回避できません。 この制限は,DECladebugでCOBOLプログラムをデバ ッグする場合にも適用されます。 9 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 Libsort V2.0 (日本語DEC OSF/1 AXP V3.0にバン ドルされている)には既知の問題点が1つありま す。INPUT PROCEDUREでSORTを実行してもRELEASE を実行しなければ,SORTにおいて次の実行時メッ セージが表示されます。 "a required subroutine parameter is missing". しかし,本来であれば次のメッセージが表示され るはずです。 "sort or merge routines called in incorrect order" V2.1-509 COMP-1またはCOMP-2データ・タイプでべき乗演算 を行い,どちらの作用対象も0の場合はSIZE ERROR 状態が発生し,代替値として1が返されます。 10 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 DEC FUSE環境内のあるCOBOLプログラムでは,クロ ス・リファレンサ・ツールからあるCOBOL項目をク リックしたときにFUSEエディタ・ツールにおいて 間違ったファイルが表示されます。これは,連続 したCOPY命令の間でデータ項目が参照されたり宣 言されたりしていないCOBOLプログラムでのみ発 生する可能性があります。この問題を回避するに は,DATA DIVISION内の連続するCOPY命令の間に余 分な定義を挿入します。 COPY "LIBRARY-1". 01 EXTRA-ITEM PIC X. COPY "LIBRARY-2". さらに,PROCEDURE DIVISION内の連続するCOPY命 令の間にデータ項目への余分な参照を挿入しま す。 DISPLAY "TEST 7". COPY "LIBRARY-1". move 1 to extra-item. COPY "LIBRARY-2". V2.1-509 文字定数が複数行にまたがっている場合,リフォ ーマット・ユーティリティによりターミナル正書 法からANSI正書法にファイルが変換されてその文 字列の改行位置に空白が挿入されます。これによ りPIC句よりも長い文字列が生成されるため,構文 エラーとなるかもしれません。 11 __________________________________________________________ バージョン___既知の問題点_________________________________ V2.1-509 REPLACE命令の後の複数行にわたるCOPY REPLACING 命令は正しく翻訳しません。以下にその例を示し ます。 REPLACE ==BB== BY ==AA==. COPY "JUNK" REPLACING ==Dd== BY ==Cc== ==Ff== BY ==Ee==. 以下に正しいコード例を示します。 REPLACE ==BB== BY ==AA==. COPY "JUNK" REPLACING ==Dd== BY ==Cc== ==Ff== BY ==Ee==. V2.1-509 COPYファイル中のコードを実行している間, DECladebugはCOPY命令の行ではなくプログラム (PROGRAM-ID)中の最初の実行可能な行を表示して います。 __________________________________________________________ 12 1.4 日本語DEC COBOL V2.0以降に修正された問題点 この節では,日本語DEC COBOLおよび日本語DEC COBOL for OpenVMS AXPで修正された問題点について示します。どちらか 一方のプラットフォームにのみ適用する場合には,[OSF]または [VMS]と明記しています。 13 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 本リリースで提供されたFUNCTIONでは,次の点が 修正されています。 o FUNCTIONを算術式または組合せ条件の一部と してPERFORM UNTIL指定内で使用しても,評 価が正しく行われるようになりました。 o FUNCTIONの結果を暗黙かつ明示的に部分参照 しても,-check bounds (/CHECK=BOUNDS)が 正しく動作するようになりました。FUNCTION の結果は,MINおよびMAXの場合または部分参 照される引数を使用している場合に暗黙に部 分参照されます。 o FUNCTION名はデバッガでは表示されません。 o [VMS]プログラムIDがFUNCTIONの結果となる ようなCALLプログラムIDを /ANAで使用した 場合に起こるコンパイラ・バグ・チェックを 修正しました。 o 浮動小数点引数を指定したFUNCTION INTEGER において,引数は無効であると診断されるこ とはなくなりました。 o -trunc (/TRUNC)を指定しても,FUNCTION REMは正しい結果を生成するようになりまし た。 o オブジェクトにFUNCTIONが含まれていても, 略記条件において正しい結果が得られるよう になりました。 o 定数の引数を指定したFUNCTION SUMにおいて -check (/CHECK)を使用しても,10進の引数 が無効であることを示す実行時診断メッセ ージは表示されなくなりました。 o INTEGERまたはINTEGER-PART関数に指定した 引数が浮動小数点定数であっても,正しい結 果が得られるようになりました。 14 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 除数の式を除算演算子として使用したCOMPUTE命令 において,下位の精度が低下することはなくなり ました。 V2.1-509 REPORT WRITERで使用する編集項目によりGEMの診 断メッセージは発生しなくなりました。 V2.1-509 編集項目(BLANK WHEN ZEROの指定を含む)を CONTROLデータ項目としてREPORT WRITER内で使用 しても,コンパイラは診断メッセージを表示して 強制終了しなくなりました。 Assertion failure: PDS_MOVE_EDITED, invalid picpointer   V2.1-509 IS INITIALを含むプログラム,またはUSAGE IS POINTERとVALUE IS REFERENCE句を使用したデー タ項目を含むCANCEL命令で参照されるプログラム における問題は修正されています。間違った結果 は,VALUE IS REFERENCE句のオブジェクトである データ項目に格納されていました。このとき,デ ータ項目があるとすればそれらは集団項目に含ま れていました。 V2.1-509 相互参照およびマップ・リストにおいて重複した り間違って入力したときの問題は修正されていま す。 V2.1-509 Screen Section内の項目の符号が間違っていると いう問題は修正されています。 15 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 記憶域内に割り当てられている一方でソース・プ ログラム内で明示的に参照されないデータ項目の アドレスは,マップ修飾語を指定したときにリス ト・ファイル内に正確に表示されるようになりま した。以前は,数個のアスタリスクが表示されて いました。 V2.1-509 最適化レベル2またはそれ以上の高いレベルで翻 訳されたReport Section内で参照されるLINKAGE SECTION項目を使用するプログラムは,実行時に異 常終了しなくなりました。 V2.1-509 FIPSフラグ診断メッセージの配置に伴う問題は修 正されています。 V2.1-509 IS EXTERNALによる項目の再初期化を行わないとい うIS INITIALに伴う問題は修正されています。 V2.1-509 編集せずに転記を行った結果,その移送先の隣り のフィールドでメモリ内容が破損するという問題 は修正されています。 V2.1-509 SORTに対して数字編集PICTURE句を指定しても正常 に動作するようになりました。 V2.1-509 リスト・マップは正常にFDを処理できるようにな りました。 16 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 デバッガを使用しているとき,PERFORM命令により あるプロシージャを実行すると問題が発生してい ました。COBOLソース・ファイルの最後にプロシー ジャを実行した場合,そのプロシージャが終了し てもデバッガは正確にPERFORM命令に戻りませんで した。これに関するもう1つの問題は,こういった PERFORM命令の直前のプログラム命令においてデバ ッガのブレークポイントが設定されなかった点で す。この問題はすでに修正されています。 V2.1-509 プログラム終了時の予期しないエラーによる問題 は修正されています。この問題は,成功以外のシ ステム状態を戻すシステム・サービス・ルーチン をアプリケーションが呼び出したときに極めてま れに発生し,この場合はシステム状態を受け取る データ項目は提供されませんでした。システム状 態はRETURN-CODE特殊レジスタに格納され,プロ グラム終了時にロードされました。そのとき, RETURN-CODEがプログラム中で参照されているかど うかは関係ありません。以前はこれを回避するた めに /RES=NOXOPENを指定してプログラムを翻訳し なくてはなりませんでしたが,現在その必要はあ りません。 V2.1-509 通常の除算とは異なる除算において誤ってSIZE ERROR条件が発生したときの問題は修正されていま す。 V2.1-509 COMPUTE命令の受取りフィールドがCOMP-1または COMP-2なのに算術式にはCOMP-1もCOM-2も存在しな いとき,計算結果の精度はUSAGEが暗黙のうちに設 定した精度よりも低い可能性がありました。この 問題はすでに修正されています。 17 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 INITIALIZE命令を使用することで極めてまれに無 効な浮動小数点の作用対象によるエラーが発生す るという問題が修正されました。 V2.1-509 RELATIVE KEYおよびDEPENDING ON変数は,ロング ワード以外のデータ・タイプ(例: PIC 9(9) COMP) が使用され,かつ変数がEXTERNALで宣言されてい るときに正しく更新されるようになりました。た だし,変数は01レベルではないことが条件です。 V2.1-509 RTLに関して修正された問題については,実行時ラ イブラリのリリース・ノート(本書の第2節)を参照 してください。 V2.1-509 [OSF] -call_sharedまたは-non_sharedのいずれか を使用してリンクする際に発生したいくつかの問 題は修正されています。 V2.1-509 [OSF]同一のキー(同数のセグメントを意味し,対 応する各セグメントは同じオフセット,長さ,お よび方向を指定する)について記述する2つのキー 指定を使用してISAMファイルを開くと,実行時に 仮の「重複キー」診断メッセージが表示されまし た。この問題は修正されています。重複が可能か どうかという点では異なりますが,その他の点で は等しい2つのキーを使用してファイルを定義して はならないという制限があります。この制限を破 ると,制限内容を明記した実行時エラーが表示さ れます。 18 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 [OSF]デバッガが変数名で使用されたアンダースコ アをハイフンに,ハイフンをアンダースコアに変 更することはありません。 V2.1-509 [OSF]コンパイラは,どのような場合でも日本語 DEC FUSEに対しファイル名を正確に伝えるように なりました。 V2.1-509 [OSF] -oは,提供したファイル名を正しく使用す るようになりました。 V2.1-509 [OSF] FILE STATUS変数は,EXTERNALで宣言された ときに正しく更新されるようになりました。ただ し,関連したファイルはEXTERNALではないことが 条件です。 V2.1-509 [VMS]コンパイラは,記述子渡しされた位取り数字 項目に対してDSC$K_CLASS_SD記述子中のけたフィ ールドを正しく設定するようになりました。 V2.1-509 [VMS]コンパイラは,EXTERNALとして宣言された DBMS DBM$定数を正しく処理するようになりまし た。 V2.1-509 [VMS]無効なDBMS USE手続き宣言が診断されても, 診断メッセージは表示されなくなりました。 V2.1-509 [VMS]コンパイラは,DBMS DMLサブスキーマ集団項 目に対して長さを正確に設定するようになりまし た。 19 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.1-509 [VMS]含まれるプログラムのPROGRAM-ID名として使 用されたハイフンが不注意にアンダスコアに変更 されたままSCA解析データ・ファイルに書き込まれ ることはなくなりました。 V2.1-509 [VMS] MOVE, ADD,またはSUBTRACT CORRESPONDING 命令のうちいずれかにあるデータ項目をFILE SECTION内で定義するとき,間違ったSCA分析ファ イルは生成されなくなりました。 __________________________________________________________ 20 1.5 日本語DEC COBOL V2.0までに修正された問題点 本節は,日本語DEC COBOL V2.0で修正された問題点について記述 します。ただし,日本語DEC COBOL V2.0はリリースされていませ んので日本語DEC OSF/1で初めて公開する問題点になります。 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 項目を編集しないために間違った符号になるとい う問題は修正されました。 V2.0-271 -check boundsスイッチを使用しても,間違った部 分参照を検出しませんでした。この問題は修正さ れました。 V2.0-271 その項目自身に転記されている,部分参照され右 詰めされた項目に関する問題は修正されました。 以前は,このような転記を行うとあて先項目は正 しいデータではなくスペースで満たされました。 V2.0-271 除算演算の分母が整数式となるCOMPUTE命令が,0 による除算として間違ってレポートすることがな くなりました。 V2.0-271 COMPUTE ROUNDED命令を浮動小数点数とともに使用 した場合の問題を修正しました。この命令による 丸めが正しく行われるようになりました。 V2.0-271 複数の除算演算子を持つCOMPUTE命令において正 しい結果が得られないという問題は修正されまし た。 21 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 数字編集されたデータ項目をCOMPUTE命令のあて先 として使用しているプログラムの中には,コンパ イラが次のようなメッセージを表示して終了する ものもありました。 Assertion failure: PDS_MOVE_EDITED, invalid picpointer この問題は修正されました。 V2.0-271 未定義のべき乗演算を試みるとき,その命令に SIZE ERROR句が含まれている場合,未定義のべき 乗メッセージが表示されていました。この問題は 修正されました。  V2.0-271 未定義のべき乗演算のためにSIZE ERRORパスを設 定しようとして失敗した問題は修正されました。 V2.0-271 制御句にべき乗演算が含まれるとき,PERFORMを正 しく制御できないという問題は修正されました。 V2.0-271 EXTERNAL句を指定したファイル状態変数を更新す る際の問題は修正されました。USE手続きの最中 にこのようなファイル状態項目が更新されると, 以前はそのファイル状態値に対する更新内容が, USE手続きの処理が完了した後に削除されていまし た。現在では生成されたコードにより,すべての 更新内容がUSE手続き内に正確に保持されるように なりました。 V2.0-271 小さい値のUSAGE COMP項目とUSAGE DISPLAY項目と の間の数字比較が失敗したという問題は修正され ました。 22 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 コンパイラがSAME RECORD AREAおよび可変長レコ ードを正しく処理するようになりました。以前 は,SAME RECORD AREAを複数の可変長レコードで 使用し指定された最初のレコードが最長でない場 合に翻訳時障害が発生していました。 V2.0-271 RELEASEにより固定長レコード・ファイルの最大レ コード長を正確に使用するようになりました。以 前は,指定したレコード長を使用してSORTに引き 渡すバイト数を決定していました。 V2.0-271 WRITE, REWRITE,またはRELEASEのいずれかにFROM 句を指定するとき,コンパイラが重なり条件を正 しく診断するようになりました。 V2.0-271 START命令が無効なキーを参照したときにコンパイ ラが強制終了した問題は修正されました。 V2.0-271 最適化レベル3またはそれ以上の高いレベルで翻訳 した後にISAMファイル内のレコードを削除しよう としたとき,まれに無効なキー・メッセージが返 されるか,間違ったレコードが削除されることが ありました。この問題は修正されました。 V2.0-271 オプティマイザが,無効キー・エラーを表示して 索引ファイルのREAD命令を失敗させたという問題 は修正されました。さらに,索引ファイルで予期 しないDELETE操作を引き起こす可能性のある問題 も修正されました。 23 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 EXTERNAL属性を持つFD内で参照されているデータ 項目から,EXTERNAL属性をもたないFILE STATUS句 のデータ項目を参照してはいけないという制限が 取り除かれました。こういった場合,現在では情 報診断メッセージが表示されます。 V2.0-271 REPLACEとCOPY-REPLACEとの間の内部処理における 特定の問題は修正されました。以前は,翻訳が強 制終了していました。 V2.0-271 次に示すようなREPORT WRITERに関する問題は修正 されました。 o REPORT WRITER NEXT GROUPが正確に動作する ようになりました。以前はNEXT GROUPにより 一貫性チェックが行われ,後にPLUSまたは NEXT PAGEを指定しないとコンパイラ障害が 発生していました。 o SUM句は含んでも詳細項目は含まないREPORT WRITER記述により,間違った結果が生成され るという問題は修正されました。以前は,こ ういった報告書によりSUM操作は行われませ んでした。つまり,このときは仮の詳細項目 を挿入する必要がありました。しかし,この 問題はすでに修正されたため,SUM処理を正 しく行うために仮の詳細項目を指定する必要 はありません。 o 以前は,REPORT WRITERにより余分な見出し 行を出力することがありました。この問題は 修正されました。 o REPORT WRITER「要約報告書」に関する問 題は修正されました。(要約報告書とは, GENERATE命令により詳細項目ではなく報告書 名を指定するものです。) 24 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 EBCDICの文字の大小順序に関する問題は修正され ました。以前は,プログラム文字の大小順序とし てEBCDICを指定したプログラムが常に正しい処理 を行うとは限りませんでした。 V2.0-271 CALL GIVINGがレベル66を参照したときに翻訳時診 断エラーを引き起こすという問題は修正されまし た。 V2.0-271 COBOLプログラムでのPROGRAM-IDのスペルミスを処 理する際に発生する問題は修正されました。現在 ではスペルミスがあっても強制終了されることは なく,適切な診断メッセージが表示されます。 V2.0-271 コンパイラは,名前のない集団または無名項目集 団に従属する集団項目に関する情報をデバッガに 対して渡すようになりました。 V2.0-271 -checkオプションを指定したときに部分参照され るOCCURS DEPENDING ON句を使用してデータ項目を 参照する際に,コンパイラがGEMの診断障害により 強制終了することがなくなりました。 V2.0-271 0による除算条件が必ずしも継続実行できないとい う問題は修正されました。 V2.0-271 0による除算エラーが,NOT ON SIZE ERROR句を含 む命令に対してのみ報告されていないという問題 は修正されました。 25 __________________________________________________________ バージョン___修正された問題点_____________________________ V2.0-271 PROGRAM-ID IDENT句を持つプログラム単位が別々 に翻訳されたために同一ソース・ファイル内に複 数存在するとき,正しいオブジェクト・ファイル 識別文字列が生成されるようになりました。 V2.0-271 以前は無効なSET命令構文が許可されていました。 あて先の1つが条件名でもう1つは条件名でないと きに,SET命令はエラーを報告しませんでした。現 在では,エラー・メッセージが表示されるように なりました。 V2.0-271 ある特定の状況下では,COPY REPLACING命令また はREPLACE命令は,リスト・ファイル内で置換され たテキストを削除していました。この問題は修正 されました。 __________________________________________________________ 26 1.6 日本語DEC COBOL for OpenVMS AXPおよび日本語VAX COBOLとの相 違点 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 ISAMファイルへのREWRITE操作は,主キーに DUPLICATES句を指定しているかどうかにより その結果は異なります。DUPLICATESを指定するタ イミングは特に決まっておらず,ファイルの作成 時に指定することもあればファイルの再オープン 時に指定することもあります(プログラムは同じ宣 言を使用します)。日本語VAX COBOLも日本語DEC COBOL for OpenVMS AXPも現在使用中のプログラム と同じ指定を使用します(したがって,ファイル の作成時に主キーに対してDUPLICATESを指定して も,現在のプログラムでファイルを再オープンす るときに指定しなければ,DUPLICATESは使用でき なくなります)。動作が一致していないときにリラ ックス・キー・チェック(-rkcフラグ)を指定しな ければ,日本語DEC COBOLは重大度の高い実行時エ ラーを表示します。たいていの場合,ファイルの 作成時にDUPLICATESは指定されますが,それに依 存しすぎてはいけません。 V2.1-509 次の単語は,日本語DEC COBOLにあって日本語VAX COBOLにはないX/OPENの予約語です。 AUTO FULL BACKGROUND-COLOR HIGHLIGHT BLINK LOWLIGHT EOL REQUIRED EOS REVERSE-VIDEO FOREGROUND-COLOR SECURE RETURN-CODE UNDERLINE AUTOMATIC MANUAL EXCLUSIVE -rsv noxopenオプションによって,これらの予約 語を予約語として処理しないようにもできます。 27 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC OSF/1ではCOPY FROM DICTIONARYをサポ ートしません。 V2.1-509 先行するブランクとタブ,および後続のブランク とタブは,OPENが実行される前にOpenVMSおよび DEC OSF/1上のファイル指定から削除されます。埋 込みブランクおよびタブは,OpenVMSでしか削除さ れません。 V2.1-509 ASSIGN TO非引用符文字列を指定する場合は, WORKING-STORAGE節にこの名前を指定しなければな りません。次にその例を示します。 ASSIGN TO TEST1 上記は,OpenVMS上で"TEST1.DAT"を指定していま す。日本語DEC OSF/1上では次のいずれかを指定し なくてはなりません。 ASSIGN TO "TEST1.DAT" または ASSIGN TO TEST1 ... WORKING-STORAGE SECTION. 01 TEST1 PIC X(9) VALUE IS "TEST1.DAT". 前者は日本語DEC COBOL for OpenVMSおよび日本語 VAX COBOLと互換性を持ちますが,後者はどちらに もサポートされません。 28 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 指定したOpenVMS論理名によりVALUE OF ID句を指 定する場合,次のような環境変数を使用しなけれ ばなりません。 VALUE OF ID "DISK1" 環境変数を定義するためには,次のいずれかに類 似したものを使用します。 % setenv DISK1 % setenv DISK1 /usr/data/ % setenv DISK1 /usr/data/test1.dat V2.1-509 エラー(OpenVMS上の-E-レベル診断メッセージ)が 発生するプログラムでは,次に示すように原始フ ァイルを翻訳しなくてなりません。 % cobol -c test.cob % cobol test.o V2.1-509 日本語DEC OSF/1では,ファイルに関するOpenVMS 形式のDCLプラスリストをサポートしていません。 OpenVMS上で習慣的に次のようなコマンドを使用し て翻訳するユーザがいると仮定します。 $ cobol a1+a2+a3,b1+b2 同様の操作を,日本語DEC OSF/1上で行う場合は以 下を使用します。 % cat a1.cob a2.cob a3.cob > t1.cob % cat b1.cob b2.cob > t2.cob % cobol -c t1.cob t2.cob 結果として日本語DEC OSF/1上で生成されるファイ ル名は,t1.oおよびt2.oとなることに注意してく ださい。 29 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 ANSI ACCEPT命令の入力処理は,日本語DEC OSF/1の 標準ファイル入出力ルーチンによって行われるた め,OpenVMSの処理とは異なります。たとえば, CTRL/Dは入力の終了を示し,CTRL/Zはプログラム を中断します。 V2.1-509 ファイルからの読込み操作にANSI ACCEPT命令を使 用する場合,ファイル内のライン・フィード,キ ャリッジ・リターン,およびフォーム・フィード 文字はそれぞれレコード区切り文字として扱われ ます。 V2.1-509 SPECIAL-NAMESは,省略時の設定により次のように なっています。 o INPUT,CARD-READER,PAPER-TAPE-READERは stdinにマップされる。 o OUTPUT,LINE-PRINTER,PAPER-TAPE-PUNCHは stdoutにマップされる。 o CONSOLEはstderrにマップされる。 対応する環境変数は次のとおりです。 COBOL_INPUT COBOL_CARDREADER COBOL_PAPERTAPEREADER COBOL_OUTPUT COBOL_LINEPRINTER COBOL_PAPERTAPEPUNCH COBOL_CONSOLE 30 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 ACCEPT命令およびDISPLAY命令により使用できる装 置の制限については,第1.2項を参照してくださ い。 V2.1-509 日本語DEC COBOLにおけるファイル共用操作および レコード・ロック操作は,日本語DEC COBOL for OpenVMS AXPとは動作が異なります。日本語DEC COBOLは次のような場合に警告診断メッセージを表 示します。 o 日本語DEC OSF/1システムにおける順ファイ ルまたは相対ファイルのファイル共用は,日 本語OpenVMS AXPシステム上のファイル共用 と本質的に同じである。 o 索引ファイルのファイル共用に次のような制 限がある。 - 日本語DEC OSF/1システム上の索引フ ァイルに対するOPEN命令のALLOWING READERS指定は最小限にしかサポートさ れない。 - 索引ファイルにALLOWING READERS指定は 使用しないこと。 o あらゆるファイル編成に対するファイル共用 プロトコルは,OUTPUTモードのOPEN命令に対 して有効である。これはEXTENDEDおよび入出 力モードに類似している。日本語DEC OSF/1 システムでは,ファイル・ロックが要求され たり保留されたりすることでアクセスが拒絶 されるか,許可されるかが決定する(上述し たREADERSのサポートには例外もある)。 31 __________________________________________________________ バージョン___相違点_______________________________________ o 索引編成されたファイルの手動レコード・ロ ックには次の制限がある。 - READおよびSTART命令の場合, REGARDLESS指定は完全にはサポート されない。読込みおよび位置決め操作は 行われるが,ソフト・レコード・ロック 状態は返されない。 - START命令はレコード・ロックを検出し たり,指示したりしない。 - ALLOWING READERS指定を含むREAD命令は サポートされない。ファイルを入出力 モードで開くとNO OTHERSとみなされ, INPUTモードで開くとALLとみなされる。 - REWRITEおよびREAD命令はレコード・ロ ックを保持しない。 - 現在のRECORD指定をUNLOCK命令で使用 することはできない。すべてのUNLOCK 命令に対して,特に指定しない限りALL RECORDS指定が設定される。 V2.1-509 日本語OpenVMS上で作成したVFCファイルを日本語 DEC OSF/1上で読み込むと,2バイトの制御文字列 を含むOSF/1データ・レコードが返されます。 これを回避するには,日本語OpenVMS上のVFC以外 の形式にファイルを変換します。日本語OpenVMS上 で日本語VAX COBOLおよび日本語DEC COBOLにより 作成されるVFCファイルには,以下のファイルがあ ります。 LINAGE REPORT WRITER SEQUENTIAL EXTERNAL/GLOBAL WRITE ADVANCINGの出力 32 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC COBOLには,制限されたファイル属性チ ェック機能があります。順ファイルおよび相対フ ァイルの場合には,ファイル属性チェックは行わ れません。索引ファイルの場合は,次にあげるフ ァイル属性がアプリケーションでの指定と一致し ていることが確認されます。 - キーの数 - 各キーの(レコード構造体内での)サイズおよ び位置。 - 各キーを重複して使用できるかどうか。 リラックス・キー・チェック(-rkc)を使用する と,作成時に指定したキー数よりも少ない数のキ ーしか指定していないファイルを開くことがで きます。この場合,指定していないキーがUSAGE DISPLAY (PIC X)である場合に限り,正しい結果 が得られます。また,-rkcを使用するとキーに DUPLICATESを指定しているファイルをファイル作 成時の指定方法とは異なるやり方で開くことはで きるが,REWRITE使用時の注意にもあるように矛盾 した結果になることがあります。 索引ファイルを作成する際,上記以外の項目につ いてもチェックが行われます。リラックス・キ ー・チェック(-rkc)を指定していなければ,同じ 機能を持つ2つのキーを使用することはできませ ん。ただし,DUPLICATESを指定できるかどうかは 例外です。これに従わないと明示的な実行時エラ ー・メッセージが表示され,DUPLICATESの影響を 受ける操作によって予期しない結果が生じること があります。 33 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 可変長レコードを含むファイルを日本語DEC OSF/1 上で読むには,このファイルがプログラム内にあ るものとして記述しなくてはなりません(RECORD IS VARYINGを使用します)。日本語OpenVMSでこう いったファイルを読む場合は,固定長レコードの ためのファイル記述を利用します。 V2.1-509 日本語OpenVMS上で固定長レコードを含むファイル を記述するには,ファイルのレコード長よりも短 いレコード長を指定するFDを含むCOBOLプログラム で行うことができます。また,日本語OpenVMSでは 各レコードで格納しきれないデータは入力の際に 無視されます。日本語DEC OSF/1上でFDに指定した レコード長は,ファイル内の実際のレコード長と 一致しなければなりません。ただし,固定長レコ ードのファイルを読み込むのにRECORD IS VARYING を使用してはなりません。 V2.1-509 日本語OpenVMS上では,ORGANIZATION SEQUENTIAL を指定したFDで既存のORGANIZATION INDEXEDフ ァイルを読み込むことはできません。日本語DEC OSF/1でORGANIZATION INDEXEDファイルを続けて 読み込むには,ORGANIZATION INDEXED,ACCESS SEQUENTIAL (かDYNAMIC),およびREAD NEXTを使用 します。 34 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC COBOL V2.1にはInformix C-ISAMライブ ラリがあるため,索引ファイルの処理方法が日本 語VAX COBOLおよび日本語DEC COBOL for OpenVMS AXPによる日本語OpenVMS上でのやり方とは特に次 の点で異なります。 o 実行時システムでは索引ファイル 1つに対 して2つのファイルがディスク上に作成され る。1つはユーザの名前に".dat"を付加した ものであり,もう1つは".idx"を付加するも のである。 o 索引ファイルを順ファイルとして開こうとす ると,あらゆるレコードの文字キー以外のキ ー部分が実際とは異なったものになる。これ は,レコード内のキーがディスク上のファイ ル形式に変換されるためである。 o 既存の索引ファイルを開く際,RTLはそのキ ー構造を調べるが,構造上の不一致を検出す ると重大なエラーが返される。キー・チェッ クについては,この節以降に記述した属性チ ェックについての注意を参照すること。 日本語DEC OSF/1では,このようなRTLチェッ クにより日本語OpenVMSシステムで検出され るような不一致は検出されない。これは,符 号付きの16ビットおよび32ビットの整数を除 くすべての整数が文字列に割り当てられるた めである。たとえば,32ビットの符号なし整 数として記述されたキーを用いて索引ファイ ルを作成すると,作成後に読み込む文字列は バイト順が逆の整数となる。これとは対照的 に,日本語OpenVMSシステムでは互換性のな いキーでファイルを開こうとするとエラーが 発生する。 35 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 COBOLはISAM定義でサポートされる索引キーのデ ータ・タイプよりも多くのデータ・タイプをサポ ートするため,実行時システムはISAM定義でサポ ートしていないデータ・タイプの文字列キーに変 換します。この節では使用するマッピングを指定 するので,COBOLの外部で索引ファイルを作成ま たは使用したいユーザはキーを変換する過程を知 る必要があります。ファイル形式の詳細について は,ISAMパッケージのマニュアルを参照してくだ さい。 - COBOLデータ・タイプの文字列は,(isam.hフ ァイル内の) ISAMデータ・タイプのCHARTYPE にマップされる(変換は一切行わない)。 - COBOLデータ・タイプの符号付きshort型整数 は,INTTYPEにマップされる(C-ISAMルーチン によって変換される)。 - COBOLデータ・タイプの符号付きlong型整数 は,LONGTYPEにマップされる(C-ISAMルーチ ンによって変換される)。 - COBOLデータ・タイプの符号付きクォドワー ドは,CHARTYPEにマップされる(変換につい ては下記を参照すること)。 - COBOLデータ・タイプの符号なしクォドワー ドは,CHARTYPEにマップされる(変換につい ては下記を参照すること)。 - COBOLデータ・タイプのパック10進数は, CHARTYPEにマップされる(変換については下 記を参照すること)。 ISAMが直接サポートしないデータ・タイプはいず れも文字列に変換され,文字列としての適切な順 序でソートされます。 36 __________________________________________________________ バージョン___相違点_______________________________________ 整数型とISAM CHARTYPEの間には,バイト位置を逆 にするという非対称アルゴリズムがあります(整数 では最上位バイトが最後にあり,文字列では最初 にあります)。 データ・タイプが_UNSIGNEDでない場合は,符号ビ ットを補います。こうすることで負の値をそれぞ れ互いに尊重し正しくソートして,正の値の前に 符号ビットを位置づけます。 パック10進数(COBOLでは最後の4ビットが符号)か ら文字列に変換する際,4ビットの符号がマイナス の場合はすべてのビットを補う(マイナスを示す1 をプラスの前に位置づける)というアルゴリズムが あります。 4ビットの符号を左に移動させ,他のビットをすべ て1つ右にシフトさせるようにビットをコピーしま す。 V2.1-509 日本語OpenVMSとは異なり,日本語DEC OSF/1シス テムでは""を使用してファイルを指定できませ ん。したがって,次の命令を指定するとCOBRTL "file not found"エラーが表示され,プログラム は実行されません。 ASSIGN TO "" V2.1-509 WRITE ADVANCINGの動作をシミュレートするため に,日本語DEC OSF/1ではLINAGEファイルに空行を 挿入します。一方で,日本語OpenVMS上ではこうい った操作は行いません。LINAGEファイルを入力す る際,こういった空行の有無による処理の違いを 補正しなければなりません。たとえば,LINAGEフ ァイルの最初の空行を無視するために,日本語DEC OSF/1において初めにREAD命令を使用します。 37 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC OSF/1では,大文字と小文字は異なる 文字として識別されます。したがって,ファイ ル名およびプログラムID名を指定する際は注意 しなくてはなりません。たとえば,OPEN OUTPUT "f.dat"を実行した後にOPEN INPUT "F.DAT"を実行 しようとしてもOPEN OUTPUTで作成した"f.dat"フ ァイルを見つけることはできません。 V2.1-509 日本語DEC OSF/1では,パラメータ引渡しメカニズ ムBY DESCRIPTORは使用できません。これは,日本 語DEC OSF/1の呼出し標準がこのようなメカニズム を定義していないためです。BY DESCRIPTORを採用 したプログラムに対しては翻訳時診断メッセージ が表示されます。 V2.1-509 算術式の結果,最下位のけたが日本語VAX COBOLの 場合と異なることがあります。このようなことが 起こるのはまれで,1つの式の中でべき乗または除 算演算の後に他の演算が続いているときに限られ ます。 V2.1-509 次の診断メッセージが表示されても実行時エラー から回復する際,日本語DEC COBOLは日本語VAX COBOLと異なった処置を行います。 cobol: Error: . . . EXIT PROGRAM statement invalid in GLOBAL DECLARATIVE 日本語VAX COBOLは常に,GLOBAL USEプロシージャ 内のEXIT PROGRAMを無視します。日本語DEC COBOL がEXIT PROGRAMを無視するのは,GLOBAL USEを現 在のプログラム単位以外から起動した場合のみで す。 日本語VAX COBOLと同じ処置を行うには,診断メッ セージの原因となる間違った構文を修正しなけれ ばなりません。 38 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語OpenVMSシステムではD_FLOATが浮動小数点 数の省略値となっているのに対して,日本語DEC OSF/1ではD_FLOATはサポートされません(永久的な 制限です)。この違いは,日本語OpenVMS上で開発 されたCOMP-1およびCOMP-2キーによるデータ・フ ァイルの読込みに影響を与えます。また,値の範 囲というよりは特定の浮動小数点数字を調べるプ ログラムへの影響が大きいようです。 V2.1-509 日本語DEC COBOLと日本語VAX COBOL V5.0および それ以降のバージョンの間では,SEARCH命令中の END-SEARCH指定およびNEXT SENTENCE指定に互換性 はありません。つまり,どちらか一方しか使用で きません。この規則はANSI COBOL規格に従ってお り,日本語VAX COBOL V5.0以前のバージョンには 適用されません。 V2.1-509 日本語VAX COBOLでは最適化のための修飾子は存在 しません。 V2.1-509 日本語DEC COBOLでは,日本語VAX COBOLよりも頻 繁にALL_LOST (all digits lost)警告診断メッセ ージが表示されます。 V2.1-509 比較演算において作用対象の一方が不正である場 合,日本語VAX COBOLおよび日本語DEC COBOLの双方ではエラ ー・メッセージを表示します。このとき,日本 語VAX COBOLは条件を含む命令を解析し続けるが, 日本語DEC COBOLは次の命令に進みます(したがっ て,この命令で他のエラーが検出されることはあ りません)。 39 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 ソース文中に複数の除算が含まれ,その除数が定 数0,表意定数ゼロ,値が0の変数のいずれかであ る場合,0による除算のため日本語VAX COBOLでは 実行時診断メッセージが除算の数だけ表示され るのに対して,日本語DEC COBOLでは1つしか表 示されません。たとえば次の例に対して,日本 語VAX COBOLでは3つの診断メッセージが表示さ れ,日本語DEC COBOLでは1つしか表示されませ ん。 DIVIDE 0 INTO A, B, C. COBOL標準に従い,どちらのコンパイラにおいても 予期できない結果により中断されることはありま せん。 V2.1-509 INSPECT命令,STRING命令,およびUNSTRING命令に おいて-std v3が指定され,バージョン3の異なる 評価順序を必要とする位置で添字または部分参照 を行うと,日本語VAX COBOLとは異なり日本語DEC COBOLでは次のメッセージが表示されます。 cobol: Info: . . . -std v3 evaluation order not supported for this construct V2.1-509 日本語DEC COBOL -std v3フラグを使用しても,日 本語VAX COBOL /STANDARD=V3修飾子によりサポー トされた以下の多くの機能を使用することはでき ません。 - STRING命令,UNSTRING命令,INSPECT命令 (Format 3),およびDIVIDE命令のREMAINDER 指定において添字を評価するとき。 - STRING命令,UNSTRING命令,およびINSPECT 命令(Format 3)において部分参照を評価する とき。 40 __________________________________________________________ バージョン___相違点_______________________________________ - PERFORM... VARYING... AFTER命令(Format 4)においてVARYING指定を使用した変数が増 大するとき。 - PIC Pけたの項目を転記する際の解釈方法。 - MOVE命令において可変長のテーブル(OCCURS DEPENDING ON)のサイズを決定するとき。 -warnフラグは-std v3の効果を計るのに有効で す。特に,-std v3を指定した場合は日本語DEC COBOLが次のメッセージを表示します。 - INSPECT命令,STRING命令,UNSTRING命令, およびDIVIDE命令で使用した場合に評価順序 変更される可能性のある項目に対して。 cobol: Info: . . . -standard V3 evaluation order not supported for this construct - MOVE命令においてOCCURS DEPENDING ONが異 なる処理を要求する相手に対して。 cobol: Info: . . . -standard V3 variable length item rules not supported for this construct 日本語VAX COBOLの /STANDARD=V3修飾子について は,『日本語VAX COBOLユーザ・マニュアル』に記 載されている修飾子に関する付録を参照してくだ さい。 41 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 データ項目の上位での切捨てに対して,日本語DEC COBOLは日本語VAX COBOLよりも敏感です。次のコ ードを含むプログラムを翻訳する際に-warnフラグ を使用すると仮定します。 WORKING-STORAGE SECTION. 01 K4 PIC 9(9) COMP. PROCEDURE DIVISION. 01-MAIN-SECTION SECTION. 01-MAIN. DISPLAY K4 WITH CONVERSION. この場合は日本語VAX COBOLとは異なり,日本語 DEC COBOLは次のメッセージを表示します。 DISPLAY K4 WITH CONVERSION. ............^ cobol: Info: . . . Possible high-order truncation ... RELATIVEファイル操作を行っても,この診断メッ セージが表示されるかもしれません。 V2.1-509 ANSI COBOL標準には,SIZE ERROR指定を行ってい ない算術文でオーバフローが発生したときは結果 が予想できないと述べられています。このような 場合,日本語VAX COBOLは通常は予想された下位の けたを返しますが,日本語DEC COBOLは何も返しま せん。 V2.1-509 DECset, LSE,およびSCAは,日本語DEC OSF/1シス テムではサポートされていません。 42 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC COBOLおよび日本語DEC OSF/1ではVFU- CHANNELはサポートされないため,VFU (Vertical Forms Unitユーティリティ)およびVFP (Vertical Forms Printing)も直接サポートされません。 V2.1-509 日本語DEC COBOLでは,DBMSサブスキーマ・アク セス(DML for DBMS)はサポートされていません。 DBMS構文を含むプログラムを翻訳しようとする と,翻訳は直ちに終了し,次の診断メッセージが 表示されます。 cobol: Severe: . . . DBMS Data Manipulation Language is not supported cobol: Severe: . . . abort DBMS構文には次の言語要素が含まれます。 SUB-SCHEMA, DB, DB-EXCEPTION, LD, COMMIT, CONNECT, ERASE, FETCH, FIND, FREE, GET, KEEP, MODIFY, READY, RECONNECT, ROLLBACK, STORE, RETAINING, WHERE, EMPTY, MEMBER, OWNER,および TENANT。 また,使用しているDBMSサブスキーマ内で定義し た変数を含むプログラムを翻訳しようとすると, 次のような一般的な診断メッセージが表示される かもしれません。 cobol: Severe: . . . Undefined name V2.1-509 日本語DEC COBOLは,RMS特殊レジスタをサポート しません。これらのレジスタを含むプログラムを 翻訳しようとすると,次の一般的な診断メッセー ジが表示されます。 cobol: Severe: . . . Undefined name 43 __________________________________________________________ バージョン___相違点_______________________________________ V2.1-509 日本語DEC COBOLでは,翻訳の最初から最後まで モジュール名は先頭のプログラムの名前となりま す。日本語VAX COBOLでは,翻訳するプログラムが 変わるとモジュール名も変更されます。 __________________________________________________________ 44 1.7 日本語DEC COBOLの新機能の詳細 __________________________________________________________ バージョン___新機能の説明_________________________________ V2.1-509 -noobjectは,オブジェクト・ファイルを作成しな いことを示します。 V2.1-509 -xrefおよび -xref_stdoutは,静的解析データベ ース・ファイルを作成するために日本語DEC FUSE データベース・マネージャが使用するデータ・フ ァイルを生成するように指示します。これによ り,そのデータベース・ファイルを使用するDEC FUSEコール・グラフ・ブラウザおよびクロス・リ ファレンサの性能が向上します。FUSE相互参照デ ータベース,DEC FUSEクロス・リファレンサ,お よびコール・グラフ・ブラウザについての詳細 は,『日本語DEC FUSEハンドブック』を参照して ください。 -xref_stdoutオプションを指定することにより, データ・ファイルを標準出力に出力するようにコ ンパイラに指示します。 V2.1-509 日本語DEC COBOLの日本語機能を使用したプログラ ムを日本語DEC FUSEで使用する場合,.xrefrcに 以下の記述を追加して-nationality japanを有効 にしてください。 cobol_command: cobol -c -noobject - xref_stdout -nationality japan 45 __________________________________________________________ バージョン___新機能の説明_________________________________ V2.1-509 日本語DEC COBOLでは,USAGE句のX/Open COMP-5 およびCOMP-X構文をサポートしています。日本語 DEC COBOLでは,COMP-5とCOMP-XはCOMPの同義語で あり,バイト(PIC X(n))でPICTURE句を指定できま す。サイズをバイト単位で指定するとき,割り当 てられた実際のサイズは次のマシンの整数サイズ (すなわちword, longword, quadword)まで丸めら れます。 V2.1-509 日本語DEC COBOLの本バージョンには,同時に 実行している複数のプロセスの間で起こりうる ファイル・アクセスの衝突を制御するための新 しいマルチユーザ機能があります。この機能は 『X/Open CAE Specification: COBOL Language』 に従っており,その詳細については最新の『DEC COBOL Reference Manual』および『DEC COBOL User Manual』を参照してください。 特に,SELECT命令でのLOCK MODE句の追加,入出力 関係の構文の追加,およびX/Openファイル共用と レコード・ロックに適した意味については上記マ ニュアルを参照してください。『DEC COBOL User Manual』では,X/Openファイル共用およびレコー ド・ロックについての記述を追加しています。 __________________________________________________________ 46 ___________________________________________________________ 2 日本語DEC COBOL実行時ライブラリのリリース・ノート 日本語DEC OSF/1 V3.0で提供される実行時ライブラリが,本キッ トにも入っています。日本語DEC OSF/1 V2.0またはそれ以降のシ ステムにこの実行時ライブラリをインストールすることができま す。 2.1 修正された問題点 日本語DEC COBOL V2.1実行時ライブラリでは,以下の点が修正お よび変更されています。 o 以前は,複素式の結果が浮動小数点項目に格納されたとき に精度の低下が見らました。この問題はすでに修正されて います。 o 日本語DEC COBOL RTLでは,0による除算に関する偽の例外 がおきる可能性がありました。この問題はすでに修正され ています。 o 入出力モードで開いた相対ファイルまたは順ファイルにお いてREAD命令がレコード・ロックを設定するとき,後続の 読込み専用ストリームはハード・ロック状態(92)ではなく 正確にはソフト・ロック状態(90)となります。以前は,最 初のアクセス・ストリームがINPUTモードで開かれREAD命令 を自動的に実行すれば,レコードにアクセスしたときに次 の読込み/書込みストリームがハード・ロック状態となっ ていました。この問題は修正されています。 o 索引ファイルに対して自動的にレコード・ロックが設定さ れる問題は修正されています。これは,レコード・ロック の設定解除が早すぎたのが原因です。 2.2 既知の問題点 日本語DEC COBOL V2.1実行時ライブラリには,以下のような既知 の問題点があります。これらは,次のバージョンで修正されま す。 47 o 使用しているアプリケーションが複数リール,すなわち複 数ファイル・テープ上でMULTIPLE FILE TAPE構文を使用せ ずにOPEN INPUT操作およびOPEN OUTPUT操作を混用すると, ファイルを破損する恐れがあります。 ファイルの破損につながる一連の事象を以下に示します。 1. ユーザのアプリケーションで,複数のリールにまたが るファイルのOPEN INPUTを実行します。 2. 現在のリールが最後のリールではないのに,NO REWIND によりファイルが終了します。 3. テープ・ドライブで次に行う操作がOPEN OUTPUT NO REWINDです。 4. テープ・スワップが実行されることにより,既存ファ イルの内容が上書きされテープの先頭にファイルが作 成されます。 この問題を回避するには,ファイルの終端に達するまで CLOSE REEL操作を実行します。このときNO REWINDでファイ ルを終了してOPEN OUTPUT NO REWINDを実行するのが安全で す。 o 使用しているアプリケーションが拡張ACCEPTまたはDISPLAY 命令を使用しており,かつカーソルが画面の右下角にある ときにエスケープ・シーケンスが表示されていると,画面 スクロールが予期しない動作をするかもしれません。 次のバージョンでは,カーソルが画面の最右カラムを超え ても改行せず,src-itemをエスケープ・シーケンスで開始 するように修正されます。 o 使用しているアプリケーションがJUSTIFIEDデータ項目の ACCEPT WITH CONVERSIONを使用している場合,その結果は 右けたよせされません。 o レコード内でFILE STATUS変数を宣言し,変数の文字を2つ のクォドワードに拡張すると,入出力命令が実行し終わっ ても2つめの文字が更新されることはありません。 48 o 索引ファイル以外のファイルをOUTPUTモードで開くと,生 成されたファイルがグループによる書込みアクセスを許可 することはありません。 o ALLOWING句を指定している場合でも,INPUTモードで開い たファイルでREAD操作を行っている間にレコード・ロッ クを要求してはいけません。これは,自動レコード・ロッ クおよびX/Openレコード・ロック概念に関しても同様なこ とが言えます。また,日本語OpenVMSでのDEC COBOLおよび VAX COBOLの場合も同じです。 o 上記の項目に関連して,日本語DEC OSF/1ではINDEXEDファ イルに対してALLOWING READERSを使用することはできませ ん。間違って使用した場合でも "NO OTHERS"とみなされま す。ファイルをINPUTモードで開くと"ALLOWING ALL"に格下 げされます。 o 索引ファイルに対してREAD操作を行っても,(ALLOWING ALL またはWITH NO LOCKを指定して)ロックを要求しなければ ロックされたレコードを検出することはできません。ハー ド・ロック条件は,ロックを要求した場合(例: ALLOWING NO OTHERS, WITH LOCK,自動的に)にしか発生しません。本 来であれば,ロックの検出はロックを要求したかどうかに 関係なく行われるべきです。 49 ___________________________________________________________ 3 問題の対処法 ユーザのプログラムが正しくリンクされなかったり,実行できな い場合には次に示す処置を行ってみてください。 o プログラムが正しくリンクされず,次のようなエラーが表 示されたとします。 ld: Can't locate file for : -lcurses cobol: Severe: Failed while trying to link これは通常,インストレーションに問題があることを意味 しています。日本語DEC COBOLを使用するには,OSFPGMRサ ブセットをインストールしなくてはなりません。 OSFPGMRサブセットがインストールされているかどうかを調 べるには,次のコマンドを使用してください。 /usr/sbin/setld -i | grep OSFPGMR o -O0フラグを使用してみます。 o -checkフラグを切り換えてみます。-checkについての詳細 は,マニュアル・ページを参照してください。 o プログラムがVAXシステム上で作成されたファイルを使用し ている場合は, -noalignフラグを使用してみます。 o ファイル・レコード構造のようなレコード構造を共用して いる日本語DEC COBOLプログラムと他のプログラムとの間の けたよせの不一致を修正するには,-alignではなく-warn フラグおよび-map decl lisフラグを使用してください。 -warnを使用すると,-alignを使用した場合に割当てが変更 されるすべてのデータに対して警告メッセージが表示され ます。-map decl lisにより生成されたリストとこの情報を 使用して,ファイルを共用する他のプログラムにおいてけ たよせされるべきレコードを決定します。けたよせとは, まだけたよせされてはいないが-alignでけたよせされると 思われるデータをもつレコードに基づいて行われます。 50 o -std v3を指定してプログラムを翻訳する場合,このプログ ラムが日本語DEC COBOLではサポートしていないVAX COBOL /STANDARD=V3機能に依存していないことを確認してくださ い。VAX COBOL /STANDARD=V3機能は,使用状況によって異 なった動作を導くことがあります。-warnフラグは,-std v3 (第1.6項を参照)の効果を計るのに有効です。 o そのプログラムが他のモジュールを呼び出しているか,ま たは他のモジュールから呼び出される場合(他のモジュール がCOBOLまたは他の言語で記述されているかどうか),呼出 しにより引き渡される引数に対して他のモジュールが同じ けたよせを使用して翻訳されていることを確認してくださ い。 o 予約語に関連していると思われる問題を検出した場合, -rsvnoxopenフラグを使用してください。このフラグを使用 すると,X/OPEN予約語を予約語(第1.6項を参照)として認識 しません。 o 最適化を行うと,モジュールのサイズは大きくなり翻訳時 間も長くなります。大きなファイルを処理する際,仮想メ モリ・クォータを増やしてメモリ不足により翻訳が中断さ れないようにしなくてはなりません。 o 実行時に予期しない"file not found"エラーが発生した場 合には,以下を確認してください。 - ASSIGN TO句およびVALUE OF ID句でのファイル指定 が,アクセスしようとしている日本語DEC OSF/1のパス 名と正確に(大文字/小文字,先行/後続ブランクがない ことなど)一致していること。 - 以前にVALUE OF IDを使用して日本語OpenVMS論理名を 指定してある場合,VALUE OF ID名を環境変数として設 定していること。 - ".DAT"を使用したファイル名が,ASSIGN TO句および VALUE OF ID句において明示的に".DAT"を用いて指定さ れていること(日本語DEC COBOL for OpenVMSでは,フ ァイル・タイプが指定されなければ".DAT"がつけられ る)。 - ORGANIZATION SEQUENTIALまたはORGANIZATION RELATIVEで開こうとしているのが,INDEXEDファイ ルでないこと。 51 o 実行時に予期しない"indexed keys do not match"エラーが 発生した場合,ファイル作成時の指定どおりにすべてのキ ーを指定していることを確認してください。 ファイル作成時よりもDISPLAY (PIC X)キーの数を少なくす るか,いずれかのキーに対するDUPLICATESの使用を変更す るには,-rkcフラグを使用するよう検討してください。 o VAX浮動小数点(D_FLOAT)はサポートされていません(第1.6 項を参照してください)。浮動小数点(COMP-1, COMP-2)の結 果は,どのような場合にも予測値とまったく等しいかどう かをテストしてはいけません。小数のけたを含む10進値の 多くは,2進浮動小数点では正確に表せません。予測した結 果とまったく等しいかどうかをテストするのではなく,値 が予測した結果に近い範囲内に収まるかどうかをテストし てください。 52 ___________________________________________________________ 4 デバッガ・ノート DECladebugデバッガは,日本語DEC COBOLで開発されたアプリケ ーションのために選択可能なデバッガです。DEC COBOL V1.1Aか ら提供されるDECladebugデバッガには,日本語DEC COBOLで翻訳 されたCOBOLプログラムのデバッグに対する制限つきサポートが 含まれています。日本語DEC OSF/1 V3.0システムで使用可能なこ のデバッガには,以下に示すような日本語DEC COBOLサポートが 追加されています。 本リリースのデバッガは,次の機能をサポートしています。 o COBOL言語構文のほとんどはデバッガに組み込まれていま す。COBOL言語構文を使用して,デバッガに次の項目を指定 します。 o 添字指定および修飾を含む識別子 o 数字定数および非数字定数 o 算術式 o デバッガの"print"コマンドを使用して,すべてのCOBOLデ ータ・タイプを印字(値の確認)できます。 o デバッガの"assign"コマンドを使用して,すべてのデー タ・タイプに新しい値を割り当てることができます。ただ し,デバッガ内での割当てには既知の問題点がいくつかあ ります。以下を参照してください。 o 割当てが数字定数または他のプログラム項目から行われる ことがあります。 o 単純な算術操作は可能だが,完全なCOBOL式の評価はサポー トされていません。次に示すように単純加算はサポートさ れています。 (decladebug) print itema + itemb このデバッガには次のような制限があります。 o DECladebugコマンドを使用する際,その使用法によっては COBOL言語構文の影響を受けることがあります(例:COBOL項 目名にハイフンが含まれる場合)。ただし,これはCOBOLプ 53 ロシージャ内でデバッガを中断したときのみの制限です。 COBOL言語構文の影響の1つとしては,デバッガ・コマン ド行に入力した式の"+"および"-"などの算術演算子の前後 にはスペースを挿入しなければならないことがあげられま す。 o COBOL言語構文によるその他の影響は,デバッガ・メモリ検 査コマンド内に見られます。たとえば,すぐ次のプログラ ム命令10個分を調べるには,普通は次のデバッガ・コマン ドを使用します。 (decladebug) ./10i このコマンドは「プログラム内の現在の記憶位置から」(ド ットで表される),命令モード("i"で表される)内のプログ ラムの次の10個分(総数の10 )の記憶位置を検査することを 示します。 COBOLプログラムをデバッグする際,次に示すように総計と モード指示子との間にスペースを入れたコマンドを入力す る必要があります。 (decladebug) ./10 i o デバッガ・コマンド行に修飾項目を指定する際,"IN"修飾 子キーワードは使用できず"OF"修飾子キーワードのみが使 用できます。 このデバッガには次のような制限があります。 o デバッガ・コマンド行上のプログラム項目に対する割当 て。 文字列項目(PIC XまたはPIC A)に新しい値を割り当てる機 能はサポートされていません。 割当てについては,この他にもいくつかの制限がありま す。その1つとして,使用された項目の位取りが一致してい なくてはならないということです。たとえば,次の宣言が 行われたとします。 01 itema pic 9(9)v99. 01 itemb pic 9999v99. 01 bigitem pic 9(13)v9(5). 54 この場合,デバッガはitemaに値1.23または8765.22を割り 当てることはできるが,1.2を割り当てることはできませ ん。代入演算子"="の両側にある数量が同じ位取りであるた め,次のデバッガ・コマンドは有効です。 (decladebug) assign itema = 1.23 (decladebug) assign itema = 8765.22 (decladebug) assign itema = itemb また,含まれる数量の位取りが異なるため次のデバッガ・ コマンドは使用できません。 (decladebug) assign itema = 1.2 (decladebug) assign bigitem = itema もう1つの制限として,項目に対して精度の高い値を割り当 てることができないということがあげられます。itemaは itembよりも精度が高いため,上記の宣言を使用した場合に 次のデバッガ・コマンドは使用できません。 (decladebug) assign itemb = itema 編集数字項目にはさらにいくつかの制限があります。1つは 代入文の両側にある数量の精度が等しくなければならない ことであり,もう1つは編集数字項目を別の数字項目に割り 当てることができないことです。 o 修飾:デバッガが従属項目を見つけられるように,それらは 完全に修飾されていなくてはなりません。次の例では"c of b of a"を完全に修飾しないと,デバッガはCを見つけるこ とができません。 01 A. 03 B. 05 C pic 9. また介入レベルがOCCURS項目である場合,複数の介入レベ ルを含む修飾によりデバッガ・エラーが発生します。たと えば,上記の例で"c of b of a"はサポートされるが,Bが OCCURS項目の場合はサポートされません。 最後に"OF"修飾キーワードだけはサポートされるが, "IN"キーワードはサポートされません。この制限は,デバ ッガの今後のリリースにおいて解除される予定はありませ ん。 55 o 添字付けは,1次元のテーブルに対してのみサポートされま す。 o 部分参照は,本リリースのデバッガではサポートされませ ん。 o プログラム・ラベル(段落名または節名)でプログラムの実 行を中止することはできません。 o デバッガの"assign"コマンドを使用して,ロング整数項目 (USAGE COMP PIC 9(10)およびそれ以上のもの)に新しい値 を割り当てるとき,デバッガはプログラム・メモリ内で近 くに割り当てられている他のプログラム項目を書き換える 恐れがあります。 o COBOL条件式を正確に評価しません。 o ルーチン内にファイル境界をまたがって分割されたソース がある場合,そのルーチンをデバッグすることはできませ ん。ソース・カーソルは常に,ルーチンの定義が開始され ているファイル中の行を示しています。COPYファイル中の 命令を実行しているとき,カーソルはCOPY命令を示してい ると推測されます。また,ソース・カーソルは誤ってプロ シージャの最初の実行可能文(PROGRAM-ID行)を示すことも 現在まだ修正されていない問題として残されています。 56 ___________________________________________________________ 5 ドキュメント・リリース・ノート 5.1 ドキュメントの変更および更新 __________________________________________________________ バージョン___変更および更新内容___________________________ V2.1-509 『日本語DEC COBOL for DEC OSF/1 AXPインストレ ーション・ガイド』が日本語化されています。日 本語DEC COBOLをインストールする際には参照して ください。 V2.1-509 『DEC COBOL Reference Manual』および『DEC COBOL User Manual』が更新されています。 __________________________________________________________ 57