OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

COBOLから呼ばれる時

  • すぐに回答を!
  • 質問No.153225
  • 閲覧数1023
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (34/57)

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);
}
--------------------------------------------------
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

「マニュアルを読め」と言う No.1 の回答が本質だとは思いますが、想像できる範囲で。

> 返ってくるコピー句の中身を見るのですが、とにかく値が設定されてかえってこない

引数で指定した変数の内容を、C の関数で設定して、それを COBOL 側で参照したい、
ということですよね。であれば、

> CALL 'TEST1' USING BY VALUE TEST001 TEST002.

CALL 'TEST1' USING BY REFERENCE TEST001 TEST002.

ということだと思いますよ。詳細は、マニュアルの CALL 文のところを読むと
わかる(かもしれない)でしょう。


> COBOLから渡される値は、c側では全てchar型で受け取らなければいけない

その言い方は正確ではないですが、だいたいの場合に当てはまるはずです。
C には、変数に対する桁数の指定、という概念がありません。

USAGE 句で BINARY とか指定した変数は、C 側では short で受取れるはずです。


> コピー句の中で「F-CODE PIC X(2)」のようにハイフンがあるのですが、cではハイフンが使えないからダメなんでしょうか?

仮引数と実引数の変数名は一致している必要はありません。呼び側と受け側で一致
している必要があるのは、その型と順序です。


# 実は、COBOL をやった事がありません (^^;
# 仕事で COBOL のソースを読むはめになりそうなので、自分の勉強に利用させて
# もらいます。「専門家」のチェックは「計算機屋」だ、という意味でチェックしました。
お礼コメント
techtak

お礼率 59% (34/57)

ありがとうございます。
とても参考になりました。
計算機屋も大変でね。(^^;
作る人にもよりますが、他人の書いたソースはわかりずらいですよね。(笑
がんばってください。
投稿日時 - 2001-10-23 13:22:57
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 24% (357/1463)

言語間インタフェースは規格化されていないケースがほとんどだと思いますし、 仮に規格化されていても、お使いの言語処理系がそれに準拠しているとも 限りませんから、まずはお使いの言語処理システムのマニュアルを参照された 方がよいと思います。その上で、なお分からないということでしたら、お使いの 環境(OS・言語処理ソフト等)を示した上で質問されれば、あるいは知っている 人がいるかもしれません。 ...続きを読む
言語間インタフェースは規格化されていないケースがほとんどだと思いますし、
仮に規格化されていても、お使いの言語処理系がそれに準拠しているとも
限りませんから、まずはお使いの言語処理システムのマニュアルを参照された
方がよいと思います。その上で、なお分からないということでしたら、お使いの
環境(OS・言語処理ソフト等)を示した上で質問されれば、あるいは知っている
人がいるかもしれません。
お礼コメント
techtak

お礼率 59% (34/57)

聞く前にまず自分で調べるのは当然ですよね。(^^;
今回は、切羽詰っていたので皆さんに頼ってしまいました。
でも、こちらのサイトは本当に頼りになります。
アドバイスありがとうございます。
投稿日時 - 2001-10-23 13:16:02
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ