IBM COBOL でプログラムを作成しています。
初歩的な質問で恥ずかしいのですが、どなたか教えていただけますか。
まず、以下のようなTABLEを定義しました。
01 A-TABLE.
03 B OCCURS 100.
05 C PIC X(08) VALUE SPACE.
05 D PIC X(02) VALUE SPACE.
05 E PIC X(08) VALUE SPACE.
05 F PIC X(05) VALUE SPACE.
05 G PIC X(05) VALUE SPACE.
05 H PIC X(05) VALUE SPACE.
その後に、INPUTファイルからREADしたデータのうち、必要な部分だけを
該当のTABLEに添え字を使用して代入していく処理を作成したいと思っています。
その場合に、上記の「C」~「H」に代入するにはどうすればよいでしょうか?
また後続の処理で直接その値を参照したいのですが、どうすれば良いでしょうか?
私の考えられる範囲で以下のようにプログラムしましたが、
実行時に「OUTSIDE THE REGION OF THE TABLE.」というようなエラーが出力されてしまいました。
MOVE I TO C(IDX1)
MOVE J TO D(IDX1)
MOVE K TO E(IDX1)
MOVE L TO F(IDX1)
MOVE M TO G(IDX1)
MOVE N TO H(IDX1)
どなたかよろしくお願いします。
No.1
- 回答日時:
私の使っていたCOBOLでは、配列にVALUEで初期値を設定できなかったのですが、お使いのCOBOLではできるのですかね?
>実行時に「OUTSIDE THE REGION OF THE TABLE.」というようなエラーが出力されてしまいました。
>MOVE I TO C(IDX1)
IDX1は、どのように宣言しているのですかね?
初期値が入っていないとか、1~100以外の値が入っているのでは?
ご回答ありがとうございます。
本当に助かります。
配列にVALUE句の初期値設定は、
以前に作成したプログラムで稼動確認できていますので、
問題ないと思います。
「IDX1」の定義は以下の通りです。
01 IDX1 PIC 9(03) VALUE ZERO.
その後メインの処理の部分で「COMPUTE」によって「+1」してから、
今回質問した処理に突入しています。
過去に同じようなプログラムを作成した時は、
添え字ではなくて、指標(INDEXED BY~)を使用しましたが、
その時は問題なくできています。
ですが今回は添え字の値を「COMPUTE」によって変化させる事で、
TABLEの処理を制御したいため、
うまくいかず困っている次第です。
何かご存知でしたらお願いいたします。
No.2
- 回答日時:
>その後メインの処理の部分で「COMPUTE」によって「+1」してから、
>今回質問した処理に突入しています。
>過去に同じようなプログラムを作成した時は、
>添え字ではなくて、指標(INDEXED BY~)を使用しましたが、
>その時は問題なくできています。
>ですが今回は添え字の値を「COMPUTE」によって変化させる事で、
>TABLEの処理を制御したいため、
>うまくいかず困っている次第です。
INDEXED BYで定義しSETを使っていたものを、変数宣言しCOMPUTEでカウントアップするように変えた訳ではないのですよね?
処理内容の具体的な提示がなければ、誰も具体的にアドバイスできませんよ?
問題になっているのは、SEARCH命令中の処理だったりするのでしょうかね?
No.3ベストアンサー
- 回答日時:
>実行時に「OUTSIDE THE REGION OF THE TABLE.」というようなエラーが出力されてしまいました。
「テーブルの範囲外」を参照しているというエラーのようですから、添字に 1~100以外の値が入っている可能性が大です。
一般的には、以下の部分の再確認となります。
1. 添字の設定前にテーブルを参照、操作していないか。
2. テーブルの上限を超えた場合を考慮しているか。
3. テーブルの上限を超えた場合の処理に誤りはないか。
また、見落としがちなミスとしては、添字の有効桁数不足(今回の場合だと添字を 9(2)で定義していて、99+1で 0になっていた)等もあります。
なお、単純な増減であれば、指標でSET命令(UP BY、DOWN BY)でも可能ですし、今回のように1つの添字(指標)で参照するデータが多いテーブルだと指標を利用する方が処理効率がいい可能性もあります。(コンパイラ次第だとは思いますが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- 英語 英文の添削をしてほしいです。 2 2022/07/12 12:07
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
COBOL 2次元配列について
その他(プログラミング・Web制作)
-
COBOLについて
その他(プログラミング・Web制作)
-
COBOLで文字タイプを数字タイプに変換する方法
その他(プログラミング・Web制作)
-
-
4
COBOL
その他(プログラミング・Web制作)
-
5
COBOLのMOVEで桁数が異なる場合
その他(プログラミング・Web制作)
-
6
COBOLでのNOT = の AND条件
その他(プログラミング・Web制作)
-
7
S9タイプからXタイプにデータは移行できるのか。(COBOL)
その他(プログラミング・Web制作)
-
8
COBOLの基本的な事なのですが。。。
その他(プログラミング・Web制作)
-
9
COBOLの改行
その他(プログラミング・Web制作)
-
10
COBOLのINVALID KEYが理解できません
その他(プログラミング・Web制作)
-
11
COBOLのEVALUATE文について
その他(プログラミング・Web制作)
-
12
COBOLの数字チェック
その他(プログラミング・Web制作)
-
13
COBOL、項目末尾に空白がある場合削除の方法その他
その他(プログラミング・Web制作)
-
14
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
15
COBOLのINITIALIZEにあたるもの
Visual Basic(VBA)
-
16
COBOL 9(02)で定義した変数にマイナス値をセットすると?
その他(プログラミング・Web制作)
-
17
【COBOL】文字列から数値項目に転記するにあたって
その他(プログラミング・Web制作)
-
18
COBOLのS9タイプからXタイプへ変換する過程
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
vbaのエラー対応(実行時エラー...
-
【Vb.net】プリンタジョブの取得
-
マクロで、次のコードへ行く前...
-
COBOL OCCURSで指定したデータ...
-
【VBA】エラー処理で別プロシー...
-
シグナル 6(SIGABRT)とは?
-
RaiseEventのメリット
-
エクセルVBAでロックをかけたい
-
ExcelのVBAで、選択したファイ...
-
エクセル画面のちらつきなくす...
-
VBAでBook読み込み時の非表示方...
-
C# 指定時間(秒間)の間処理を...
-
ドリブン??
-
VB6.0で、ランタイムエラーを全...
-
VB6にてネットワーク上にある共...
-
VB6で定時刻処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報