私は3つのライブラリA、B、Cを持っています。ライブラリの順序は、Bの上にA、Cの上にBです。ライブラリAにはプログラムPa、ライブラリBにはプログラムPbがあります。 Pbは同じ名前とパラメータリストを持っていますが、それらの機能はわずかに異なります。今ではPaを呼び出すライブラリCにプログラムPcがありますが、目的の結果を得るためにPbを呼び出す必要があります。問題は、ライブラリAをライブラリリストから削除することができず、ライブラリBの下に移動できず、ライブラリAからPaを削除できないことです.Paを非表示にしてPc呼び出しPbを代わりに行うことは可能ですか?プログラムのライブラリ名はプログラムでコード化することはできませんので、実行時に決定する必要があります。同じライブラリリスト内の同じ名前のプログラムの場合、どのライブラリを呼び出すかを積極的に制御する方法は?
答えて
プログラムライブラリ名は、プログラムでコード化することはできませんあなたはそれが店の標準のためか、実装上の困難であることを意味しますか?それは望ましくない何か他のものか?
いくつかのアプローチがあります。どの言語を書いているのか分かりませんので、私は擬似コードを使って説明します。
1)サブルーチン
when condition = A
do subrA
when condition = B
do subrB
...
subrA
call libA/pgmA parm(...)
subrB
call libB/pgmB parm(...)
2)動的と呼ばれるプログラムが呼び出し元に値を返さない場合、これは最高の作品
define command char 128
when condition = A
command = 'call liba/pgma parm('
when condition = B
command = 'call libb/pgmb parm('
end
command = command + parm1 + ' ' + parm2 + ')'
call qcmdexc (command 128)
を呼び出します。
これは、最良の方法。とにかくありがとう。 –
使用するシステムをシステムに知らせずに、システムがライブラリリストを上書きできるようにするかどうかを尋ねてきます。私はそれがどうなるかわからない。
私はあなたがライブラリBを使ってあなたのプログラム呼び出しを修飾しなければならないと思うと思います。あなたのプログラムでライブラリ名をハードコーディングできなければ、何とかソフトコードすることができます。
/* CL example */
dcl &libname *char 10
rtvdtaara dtaara(WHICH_LIB) rtnvar(&libname)
call pgm(&libname/PGMNAME) parm(...)
これで、ライブラリリストの管理に加えて、このデータ領域(またはライブラリ名を保持するために使用するもの)を維持する必要があります。
残念ながら、ライブラリの名前を格納する場所はありません。他の方法は? –
私はあなたのライブラリーリストを変更することなく、または(2)ライブラリーBを見るように言うことなく、ライブラリーB内のプログラムを見つけるようにシステムに指示する方法を知らない。 – dmc
ライブラリリストは、システム部分、製品ライブラリ、現在のライブラリ、ユーザー部分の4つのコンポーネントで構成されています。通常の状況下では、システムを修正すべきではありません。 (変更後は制限)ただし、他の部分はすべて開いています。
最も可能性の高いスポットは「製品ライブラリ」部分にあります。これは2つの図書館を保持することができますが、1つを見るか、見ないことが最も一般的です。 * CMDまたは* MENUオブジェクトを作成する場合は、そのオブジェクトにプロダクト・ライブラリーを割り当てることができます。 (現在のライブラリも設定することができます)。コマンドの場合、そのコマンドが実行されるたびに、コマンドが終了するまで関連する製品ライブラリがライブラリリストに追加されます。その時点で、ライブラリは削除されます。これらがCLプログラムの場合、ライブラリのリストは、あなたが知っているかどうかにかかわらず定期的にライブラリリストに追加されたり削除されたりする可能性があります。
製品ライブラリの一般的なロジックは、ライブラリを最初の開いた場所に追加することです。両方のスポットが占有されている場合は、上部のライブラリを取得し、下部のライブラリを上に移動し、ライブラリを最下部に追加します。プログラムが終了すると、プロダクト・ライブラリーは開始時と同じようにプロセスが逆になります。
製品ライブラリは、現在のライブラリとライブラリリストのユーザー部分の上にあります。 Change Library List (QLICHGLL) APIを使用して製品ライブラリを設定します。
- 1. 複数のスプライトキットノードを同じ名前で制御する方法は?
- 2. Java内で同じ名前のメソッド内で別のメソッドを呼び出す
- 3. 同じスパイダーをプログラムで呼び出す
- 4. ベースクラスで同じ名前のメソッドを呼び出す
- 5. 同じ名前の関数を呼び出す
- 6. 同じ名前空間内の異なるクラスからVisual WebPart(.cs)内のC#メソッドを呼び出す方法
- 7. 毎回同じ関数内の同じコードを再帰的に呼び出す方法
- 8. 同じ名前の文字変数でオブジェクトを呼び出す方法
- 9. C++ - クラスと同じ名前のクラス内で関数を呼び出す
- 10. 同じ名前で署名が異なる場合、現在の関数内で別の関数を呼び出す方法はありますか?
- 11. 関数Aを同じ名前空間内の関数Bから呼び出す方法は?
- 12. Python:インポートされたモジュールに同じ名前の関数がある場合にローカル関数を呼び出す
- 13. 同じパッケージ内の関数またはプロシージャを呼び出す
- 14. PHPで同じユーザ名で複数のログインを制御する
- 15. Meteor - 同じテンプレートヘルパーで別の関数を呼び出す方法
- 16. 同じスピンナー値の選択でアクションを呼び出す方法
- 17. Excel VBA - ボタンの名前が同じ場合にボタンをクリック
- 18. 同じ名前のノードの内部テキストをリストに保存する方法は?
- 19. aspx.csから同じプロジェクトの別のaspx.csにメソッドを呼び出す方法は?
- 20. 同じメソッド名で複数のdllインポートを呼び出す
- 21. 方法スコープパラメータ値が同じ名前のインスタンス・レベルの静的フィールドは、クラス内で宣言された場合
- 22. C#で定義された関数を同じパラメータ、戻り値の型、同じ名前でVB.NETプロジェクトとは別の方法で呼び出す方法
- 23. は、同じ名前
- 24. 同じ名前
- 25. applescript:同じ名前のファイルが存在する場合、フォルダ内のファイルを自動的に削除します。
- 26. Scalaキーワードと同じ名前のJavaメソッドを呼び出すにはどうすればよいですか?
- 27. フォルダー内に同じ名前のモデル、ビュー、コントローラーを配置する方法は?
- 28. TabHostと同じアクティビティを呼び出す
- 29. 私は(スクリプト内の)同じフォルダからファイルを呼び出すには
- 30. は、スーパーメソッドを呼び出すのと同じデコレータパターンですか?
より良い情報を提供できる場合は、より良い回答を得ることができます。 Pa、Pb、およびPcはどの言語で書かれていますか? Pcからどの言語を呼び出す必要がありますか? Pcを変更する機能はありますか? –
この問題はCLにとっての問題です。 –