アカウント名:
パスワード:
誤計算するケースっていうと
(略)01 A-ALL. 03 A1-COMP PIC 9(18) COMP-3. 03 A2-COMP PIC 9(18) COMP-3.
(略)
MOVE SPACE TO A1-ALL.ADD 1 TO A-COMP.
見たいなケース?ただし、「ADD 1 TO A-COMP」かその後のOUTPUTで実行時エラーに成るメーカーも有るような気はします。COMP-3の所がBINARY(これメーカーの方言だっけ?)になればあり得るか?
まあ、こんな事は意識的にコンパイラの型チェックを回避しようとしない限りやりませんが。
適当何で間違ってたらスマン
COBOLの場合プログラム上で定義されている変数の値を直接計算に使用するのでなく、計算する場合計算用のワークエリアをコンパイラが生成して、そこに変換した値をコピーした後計算が行われます。また、例に記述されたケースでもMOVEの部分ではCOBOLの場合、言語仕様でどう動作するかまで決まりがあるのでバッファーオーバーランの類が派生したらそれはコンパイラのバグと言えます。
再定義の場合でも一応仕様上は同じ動きをする事に成ってますよね
まあ、文字列が突っ込まれた変数に計算を行う場合の動作は細かい決まりがないんでどう動作するかは微妙ですが
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
COBOLでも、こんなこと起きるの? (スコア:0)
Re: (スコア:0)
誤計算するケースっていうと
(略)
01 A-ALL.
03 A1-COMP PIC 9(18) COMP-3.
03 A2-COMP PIC 9(18) COMP-3.
(略)
MOVE SPACE TO A1-ALL.
ADD 1 TO A-COMP.
見たいなケース?
ただし、「ADD 1 TO A-COMP」かその後のOUTPUTで実行時エラーに成る
メーカーも有るような気はします。
COMP-3の所がBINARY(これメーカーの方言だっけ?)になればあり得るか?
まあ、こんな事は意識的にコンパイラの型チェックを回避しようとしない
限りやりませんが。
適当何で間違ってたらスマン
Re: (スコア:0)
再定義した領域の使用ミスによって起こったものなのか
前者のバッファーオーバーランが原因でないことを祈ります。
Re: (スコア:0)
COBOLの場合プログラム上で定義されている変数の値を直接計算に使用するのでなく、
計算する場合計算用のワークエリアをコンパイラが生成して、そこに変換した値を
コピーした後計算が行われます。
また、例に記述されたケースでもMOVEの部分ではCOBOLの場合、言語仕様でどう動作するかまで
決まりがあるのでバッファーオーバーランの類が派生したらそれはコンパイラのバグと言えます。
再定義の場合でも一応仕様上は同じ動きをする事に成ってますよね
まあ、文字列が突っ込まれた変数に計算を行う場合の動作は細かい決まりがないんで
どう動作するかは微妙ですが