• 締切済み

PRO*COBOLのSQLCTXの桁数変更

COBOLの組み込みSQLについて質問があります。 Oracle 8.1.5 のPRO*COBOL でプリコンパイルしたところ、 "SQLCTX" が書き加えられています。 符号付の9桁の数字項目であるはずなのに、 10けたの数字が初期値として与えられてしまいます。 01 SQLCTX GLOBAL PIC S9(9) COMP-5 VALUE +1000107995. ↑ コンパイルすると、ここでエラーになってしまいます。   解決法知っている方、どうか教えてください。   先週は正常の値(9桁)が入っていました。 ----------------------------------------------------------------------

みんなの回答

回答No.1

ヲイラも同じ所で悩んでいましたが  http://support.oracle.co.jp/open/owa/external_krown.search へいってSQLCTXで選択して見てください。 回答らしきものが載っていましたよ~。

関連するQ&A

  • pro*cobol ⇔ oracle のデータ型の扱い

    お世話になります。 pro*cobolで、テーブルの作業領域を定義し、 データの編集後、oracleのテーブルへ出力している のですが、cobol側の定義はpic9タイプで oracleの項目定義ではCHAR型になっております。 この状態で、cobol側のpic9タイプの項目に "A00001"等文字を含む値を設定した所、 ABENDせずにoracleテーブルに"A00001"の 項目値を出力しています。 cobolだけに限れば、属性エラーなのですが、 この場合、oracleの項目定義が優先されるのでしょうか? よろしくご教授の程、お願い申し上げます。

  • COBOLについて

    COBOL初心者なのですが。 COBOLで 01 A.   03 B PIC 9(02).   03 C PIC X(02). MOVE  SPACE  TO  A. とした時、基本項目であるBには何が入っているのでしょうか? 数字項目にSPACEというのはありえないですよね。 どなたかわかる方、教えていただけませんか?

  • COBOLについて

    今高校でCOBOLの勉強をしています。 教科書の練習問題が宿題に出されたのですが、わからないところがありました。 (1)数字項目2桁、テーブル名SUUJI-TBL、データ名SUUJI、要素数20個のテーブルを確保しなさい。 (2)手続き部で、(1)で確保したテーブルに、先頭から1,3,5・・・の値を転記しなさい。ただし、PERFORM文を用いること。 という問題です。 (1)は、 01 SUUJI-TBL.   02 SUUJI PIC X(2) OCCURS 20. と書けたのですが、(2)がさっぱりわかりません。 わかる方、教えてもらえますか?

  • COBOL数値転記の仕様

    このたび、まったくの未経験のCOBOLをやることになりました。 で、数値データの表し方になんやかやとやたら方法があるようなのですが、それらを互いに「転記」したときに、どういう結果になるものか、皆目わからないんです(環境はCOBOL85でWindows上での開発です)。 テクニックとしては基本だと思うのですが、それでいてどこにも説明されていな~い!フリーのCOBOLツールは見つけてきましたが、使い方が???なもので…。  たとえば、  01 X1 PIC XX (数値が入ってるとします)  01 N1 PIC 99  01 D1 PIC 99 COMP  01 B1 PIC 1(16) BIT な場合、X1とN1は直接  MOVE N1 TO X1 などとやってもデータは失われないと思うんですが、他の形式での操作は(桁あふれとか無視して)ちゃんと転記できるのでしょうか。 いま特に、D1からX1へというパターンが多いです。1バイトの2進データを、数値の文字列として使おう、というんです。いわば、1バイトを3バイトに展開してやるんです。何も考えずに書けば、  01 D2 PIC 9(4) COMP VALUE 97  01 X2 PIC X(3)  MOVE D2 TO X2 でしょうけど、たぶん'a△△'になるだけのような気がします…。  それとも、  01 N2 PIC 9(4)  MOVE D2 TO N2  MOVE N2 TO X2 などとやっていけたりするのでしょうか。 いったいどうなるのでしょう、いろいろ書いちゃいましたけど、各々の転記の仕組みを教えてください。 また、COBOLの(お堅い規格を書き写しただけでない)解説のサイトなどあれば、ご紹介いただけますでしょうか。

  • COBOLとCの変数定義

    いつもお世話になってます。 今回は、COBOLとC言語の変数定義の事で質問させていただきます。 以下のCOBOLの変数定義をC言語で記述するとどのようになるでしょうか? 01 wkarea. 05 wk-code. pic s9(03) comp. 05 wk-err-code. 10 filler. pic x(01) value '0'. 10 wk-err-code-9 pic 9(05) 412. 05 wk-err-mdl. 10 filler pic x(01) value '0'. 10 wk-err-mdl-9 pic 9(40) value space. 05 wk-e-code 10 filler pic x(01) value 'A'. 10 filler pic x(01) value 'B'. 10 wl-id pic x(02). 10 wk-no pic 9(03) value xero 10 wk-level pic x(01) value low-value. ちょっと手間かも分かりませんが、どなたか詳しい方いらっしゃいましたら、お答え頂けると有難いです。 よろしくお願いします。 .

  • COBOLのCOUNTER

    COBOL初心者です。 COBOL97を使用しています。 人数を入力して、入力した人数の得点を入力、 入力した得点の平均、合計、最大、最小を表示するプログラムを作成しています。 PERFORM文とCOUNTERの指定方法がよくわかりません。 COUNTERは数字でなければならないのでしょうか? どのようにプログラムを書いてよいかわかりません・・・・ どなたかお助け下さい。 お願いします。 01 VAL. 02 VAL PIC 9(4). 01 MAX-VAL PIC 9(4) VALUE ZERO. 01 MIN-VAL PIC 9(4). 01 TOTAL-VAL PIC 9(4). 01 AVERAGE-VAL PIC 9(4). 01 COUNTER PIC 9(1). 01 PEOPLE PIC 9(15). 01 MAX-Disp PIC Z(3)9. 01 TOTAL-Disp PIC Z(3)9. 01 AVERAGE-Disp PIC Z(3)9. 01 MIN-Disp PIC Z(3)9. 01 得点 PIC 9(4). PROCEDURE DIVISION. DISPLAY "人数を入力してください". ACCEPT PEOPLE. DISPLAY PEOPLE "人です". DISPLAY "テストの得点を入力してください". PERFORM TEST BEFORE VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > PEOPLE

  • COBOLから呼ばれる時

    COBOLプログラムから呼び出され、ファイルのレコードを一行読んでレコードの内容を返すというcサブルーチンを作っているのですが、COBOL←→c間でのインタフェースの扱いかたがよくわからなくて困っています。(ちなみにこのモジュールはcからも呼ばれる事がある) COBOLはコピー句(test001.cbl, test002.cbl)に値を入れて、cサブルーチンにそれを渡しています。 テストはCOBOL85を使用してるので、cサブルーチンの中のデータを見ることができません。なので、返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこないのです。ただ単にロジックのバグと言う可能性もあるけど(^^; 私はインタフェース環境の事がまだ良く解っていないので、今回こちらに質問した次第です。経験者の方がいましたら、どうかおしえてください。 あ、それからCOBOLから渡される値は、c側では全てchar型で受け取らなければいけないような話しを聞いたのですが、本当でしょうか? もう一つ。 コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか? たくさん質問してしまいましたが、どうかよろしく。 /COBOL側/ -------------------------------------------------- CALL 'TEST1' USING BY VALUE TEST001 TEST002. -------------------------------------------------- /cサブルーチン側/ -------------------------------------------------- int TEST1(test001, test002) char *test001; char *test002; {     ・     ・     ・ return (0); } --------------------------------------------------

  • COBOL集団項目の領域の長さが分かる命令や手法はありませんか?

    COBOL集団項目の領域の長さが分かる命令や手法はありませんか? 汎用機の開発に従事している者です。 COPY句を使ってファイルレイアウトを展開するやりかたで、 そのレイアウトが設計書どおりかを確認したいのです。 例えば、 01 OT-FILE.  03 OT-AAA    PIC 9(007) COMP-3.  03 OT-BBB.    05 OT-BBB-A PIC ZZZ9.    05 OT-BBB-C PIC 9V99. だと、OT-FILEは11バイト、OT-BBBは7バイトというようにです。 エクセルに展開して関数やマクロを駆使して数えるのも いいのですが、コンパイル‐リンクを行って実行形式に変える 事が一番の検証方法かと思います。 その際に領域の長さを求める手法があれば、自前で作る エクセル関数よりも信頼度の高いチェックが少ない工数で可能ですが なかなか良い考えが浮かびません。 どなたかお教え願います。

  • COBOLで文字タイプを数字タイプに変換する方法

    すいませんコボル初心者の者です。周りに聞く人がいずに困っています。 アドバイスよろしくおねがします。 例えば、IN-SUNPO PIC X(7)に "0.25"や"0.025"と値が入っているとします。 この項目を OUT-SUNPO PIC 9(4)V9(3)にセットして出力したいのですが いい方法が考えつきません。 どのようにすれば実現するのでしょうか。 また、IN-TANAK PIC 9(8)をOUT-TANKA PIC X(10)に左詰でセットするために 入力項目の頭のゼロをどう処理していいかもわかりません。 考えても結論がでませんでしたので、投稿しました。 宜しくお願いします。

  • COBOLプログラムからC関数を呼び出す方法

    Cプログラムをプリコンパイルした後、コンパイルした際にできる「.obj」ファイルを、ひとかたまりのライブラリファイルにすることは可能でしょうか? 「aaaaa.pc」 →prec→ 「aaaaa.c」 →cl→ 「aaaaa.obj」作成 「bbbbb.pc」 →prec→ 「bbbbb.c」 →cl→ 「bbbbb.obj」作成 「ccccc.pc」 →prec→ 「ccccc.c」 →cl→ 「ccccc.obj」作成 aaaaa.obj,bbbbb.obj,ccccc.obj から libraryファイル作成 もともとUNIX上でコンパイルした「.o」ファイルより「library.a」ファイルを作成し、COBOLプログラム(呼び出し元)のコンパイル時にリンクさせておりました。 それをWINDOWSで行いたいと思っております。 コンパイルはBATファイルを作成(Oracleインストール時にあった、pcmake.batをカスタマイズ)して、「prec」コマンドでプリコンパイルして、VisualStadioのC++をコマンドライン「cl -c(リンクなし)」でコンパイルして、最終的に中間ファイル「.obj」を作成しております。 ご説明が分かりにくくて申し訳ございませんが、具体的な方法・ご指摘がございましたら、宜しくお願い致します。