• ベストアンサー

COBOLでSHELLを作成することは可能ですか?

一度質問したのですが、何故か反映されていないみたいなので再度質問させていただきます。 これは又聞きなんですがCOBOLでSHELL自体を構築することは可能なんでしょうか? 私はCOBOLに関しては全くの初心者でSHELLに関してはCシェル又はBシェルの概略ぐらいしかわかりません。 この話の信憑性を問う意見がありましたので詳しい方がいれば教えてください。

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

  • ベストアンサー
  • imuya
  • ベストアンサー率33% (2/6)
回答No.1

SHELLにどういった機能を持たすかにもよりますが可 能です。 昔はCOBOL上でBASICのソースプログラムをよく動かしたものです。 その逆もありです。BASIC上でCOBOLを動かす。

masayan1000
質問者

お礼

古い言語は疎かったので大変参考になりました。 COBOL上でBASICのソースプログラムを動かせるのは知らなかったです。 もう古い言語になってますが、今でも健在ですね。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

作りたくはないけど、 可能か? と言えば可能だと思います。

masayan1000
質問者

お礼

私も可能だと思っていたのですが、反対者は今でも絶対に出来ないと言い張っています。 でも色々調べたらできるみたいですね。 ありがとうございました。

回答No.2

こんばんは。 COBOLについてのご質問なので、お話しさせていただきます。 SHELLというのが、コマンドインタープリタという意味であれば可能だと思います。 つまり、特定の内部コマンド(ファイルコピーなど)はCOBOLプログラム内部で直接実行して、それ以外の外部コマンド(コマンドが別のプログラムになっている場合)はそのプログラムをCALLするということになると思います。 つまり外部コマンドはサブプログラムのように実行することになると思います。 ただし、COBOLのサブプログラム以外へのパラメータの引き渡しは各COBOLの処理系やOSに依存するのでマニュアルをご覧下さい。 多分、COBOLプログラムで無限ループでキー入力を受け付けて、EVALUATE等で判断するような形になるでしょう。 バッチファイルなどの処理も付け加えると本格的になるでしょう。 私は、SHELLとは起動後常駐して、コンソール入力を処理するプログラムで、一般的には簡単なスプリクト言語を実装しているものと理解しております。

masayan1000
質問者

お礼

大変詳しい解説ありがとうございました。 私は古い言語はCぐらいしかしらないのでCOBOLで SHELLを構築する方法は皆目わかっていなかったですが、raccoon_dog65さんの解説を読むとできそうですね。

関連するQ&A

  • CシェルとCOBOLについて

    初めて質問させて頂きます。 初心者の為、あまりうまく質問が出来るかどうかわかりませんが宜しくお願い致します。 今、 CシェルからCOBOLを呼び 呼ばれたCOBOLの内部で処理をしています。 そこで、 COBOLの内部で処理した値を呼び元のシェルに返すことは 出来るのでしょうか? 返す項目は、複数あり数値項目、文字項目両方あります。 プログラムのほうもあまり詳しくはありませんので、 初歩的な質問かも知れませが、 何方かご教授願いませんでしょうか。

  • COBOLについて

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

  • COBOL

    すごい簡単な問題なんで恐縮します。COBOL超初心者です。 通信学習で学んでるのですが、テキストに詳しく載っていないので行き詰っています。 下記A, B, Cの値を求めなさい。 MOVE 9 TO A. COMPUTE B = A / 3 COMPUTE C = A + B COMPUTE A = A * 2 で、私が考えた答は、 A = 18 B = 3 C = 12     です。 自分の出した答に全く自信がありません。 どなたか、合っているか教えて下さいませんか? そして、間違っている場合、答の求め方を教えて下されば幸いです。 宜しくお願いいたします。

  • COBOL 2次元配列について

    COBOL の2次元配列(?)について質問です。 例えば 01 A ...03 B OCCURS 5 ......05 C .........07 D OCCURS 10 ............09 E ............09 F とある場合、個々の E,F にアクセスするには どのように記述すればいいのでしょうか。。 MOVE 1 TO E(1,1) や、 MOVE 1 TO A(1,1) ではダメでした…。 よろしくお願いします。

  • COBOLでのチェックデジット算出

    COBOL初心者です。 01 印刷領域. 03 Aコード PIC X(03). 03 Bコード PIC X(04). 03 Cコード PIC X(02). 03 チェックデジット PIC X(01). と定義した変数のA,B,Cコードだけをサブルーチンに渡して、チェックデジットを受け取りたいと思います。 このときチェックデジットを抜いた"印刷領域"を渡すことは可能でしょうか? 例) Aコード 102 Bコード 2001 Cコード 03 渡すデータ102200103 受け取るチェックデジット7 印刷領域 1022001037 という具合にしたいんですが… あと、A,B,Cコードは数字に変換しなければなりません。 すみませんがおしえてください(ToT)/~~~

  • gnupackのshellについて

    以前Linuxでemacsを使いC言語の学習をしていました。 現在Windowsでgnupackを使い同様の環境を作ろうとしたのですが、shellの動作が少しおかしいので、質問しました。 Cで以下のような、ごく初歩的なプログラムを書いたのですが、gnupackに同梱されているshell(zshとeshell)で実行した所、本来最初のprintfが表示されるはずが、先にscanfの入力要求をされ、その後に3つ全てのprintfが表示される形になってしまいます。 #include <stdio.h> int main (void) { int a, b, sum; printf("Please input two numeral from the keyboad. \n"); scanf("%d", &a); scanf("%d", &b); sum=a+b; printf("When you calcurate the harmony of input %d and %d \n", a, b); printf("It is %d. \n", sum); return (0); } Windows標準であるcmdから実行したり、cmdからzshを通して実行すると、通常通り動作します。 cmdからzshを起動した時と、gnupackのzshを直接起動した時では最初のディレクトリが異なっている状態なので、もしかしたらzshが2つ入っていてgnupackの設定に問題がある可能性も考えられるのかな とも思っていますが・・・ Windowsのemacsでshellを使いたいと考えていますので、何かご存じの方がいらっしゃいましたら、回答をお願いします。 環境は Windows7 UltimateSP1 (64bit) AMD PhenomII X4 955 8Gメモリ gnupack_devel6.00 他何かあれば補足します。 よろしくお願いします。

  • 適切なシェルスクリプトの実行方法について

    シェルスクリプト内でi18nの再読み込みをするために . /etc/sysconfig/i18n と記述するとシェルスクリプト終了後にi18nの内容が反映されていません。 シェルスクリプト自体は ./shell1.sh という形で実行しています。 質問1:このようになるのは「./shell1.sh」と実行したスクリプトは 新たに作成された子プロセスによって実行される為、スクリプトが終了し 親プロセスに戻っても親自身は再読み込みを行なっていないから、という認識で間違いないでしょうか。 質問2:この現象の回避策として「source shell1.sh」とsourceコマンドで シェルスクリプトを実行する方法を試してみました。 実際に上手くいったのですが、「set -e」を使っているとエラー時に ログアウトしてしまうなどの弊害もありました。 他に適切な回避策に問題はないでしょうか。 ご存知のかた、お手数ですがご解答のほど宜しくお願い致します。

  • c shellスクリプト中のエスケープとコメントアウト

    c shellスクリプトで改行コード(文末の"\n")をエスケープしたい場合に関して伺いたく思っています。以下のように「my_command」というコマンドに、幾つかオプションをつけるような場合、改行コードをエスケープして見やすく記述したいような場合を想定しています。 ある行をコメントアウトするとき(下の例の "<-")、その行の末尾に"\"が必要なようです。 しかし、これがどうしてコメント行の最後をエスケープしないといけないのか、あるいは、どうしてコメントが有効に働くのか、不思議に思っています。 SHELLがどのような処理手順をとっているから"\"があると有効に処理されるのか、教えていただけませんでしょうか? 【推測1】 [改行コードまで読む] --> [式を評価] ... この処理だと > my_command -opt_a hoge_a # -opt_b hoge_b_tmp -opt_b hoge_b が評価され、正しくオプションが渡せない。。。 ※ 一行づつ式を評価をしながら"\n"があるまで読みこみ、"\n"を発見したら子シェルを起動する、という手順で正しいのでしょうか? 【例】 -------------------------------- #! /bin/csh -f my_command -opt_a hoge_a \ # -opt_b hoge_b_tmp \ <-- -opt_b hoge_b --------------------------------

  • 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. ちょっと手間かも分かりませんが、どなたか詳しい方いらっしゃいましたら、お答え頂けると有難いです。 よろしくお願いします。 .

  • CYGWINやKNOPPIXを、BシェルからCシェルに変更したいです。

    お世話になっております。 疑問となっている事は以下の通りです。 (1)CygwinのプロンプトををBシェルからCシェルへ変更する手順。 (2)KnoppixのプロンプトををBシェルからCシェルへ変更する手順。 ということをしたいと思います。 (1)については、Cygwin.batの最後にあるbashをcshに変更したのですが、Cygwin自体が起動しなくなりました。 (2)については、どの様な設定をすればよいか全く解らない状態です。 どのような設定をすれば、Cシェルが扱えるようになるのでしょうか。 ご教授のほど、宜しくお願いします。

専門家に質問してみよう