CALL
ステートメントの文字列リテラルを引数として渡そうとしています。リテラルはCALL文の引数としてどのように扱われますか?
CALL "SOMEPROGRAM" USING "SomeStringLiteralArg"
私はと呼ばれるサブプログラムに連動アイテムとして引数を定義する必要があります動作することを
LINKAGE SECTION.
77 SOME-STRING-ARGUMENT PIC X(20).
が、私は20文字より短い文字列リテラルを渡すとき、ランタイムが文句を開始します。
対応するリンケージアイテムよりも小さいUSINGアイテム(#1)が渡されました。
指定された文字列リテラルは20文字でなければなりません。しかし、私は、引数として文字列リテラルに合格するための理由があります
私はプログラムに渡す各項目のための一時的な変数を定義するのが面倒です。私はプログラムに渡す各アイテムのワーキングストレージに異なる長さの100個の「一時的な」変数を持つと、プログラムが不必要に乱雑になります。私の質問のCALL "SOMEPROGRAM" USING "shortStrLit "
一つはある、またはコース:
MOVE "ShortStrLit" TO SOME-TEMP-VAR
CALL "SOMEPROGRAM" USING SOME-TEMP-VAR
私は手動でもパッドが文字列リテラルが必要な20文字の長さに一致するようにする必要はありませんどのようにすることができます私はCALL
ステートメントの引数としてリテラルを渡しますか?しかし、さらに重要なのは、根本的な問題は次のとおりです。CALL
ステートメントの引数としてリテラルが渡される方法は?たとえば、9
を渡すと、内容が "9"の文字列として解釈されるのですか、またはコンパイル時に整数に変換されますか?
私は、Windows 10上で、ここで
コンパイラやOS、してください。メッセージの完全な参照(メッセージ番号がある場合)。 AcuCOBOLですか? http://community.microfocus.com/microfocus/cobol/extend_and_acucobol/w/knowledge_base/17365.item-passed-smaller-than-linkage-section-item.aspx –
あなたは今まで、唯一の人であることを行っている場合は、そのプログラムに取り組んで、あなたが好むほど怠惰であることを自由に感じてください。あなたがプログラムを見て次回に質問をすることはありません。もしそうでなければ、将来他の誰かがプログラムを見ているとすれば、私はそれに反対するでしょう。あなたの怠惰は、誰かがプログラムを見るたびに、他の誰かの余分な時間です。 –
手続き部を介して散らばっているリテラルは、(自分自身で定義された使用を超えて、1つの記録を追加するなど)悪い考えです。なぜデータ定義でVALUE句を使用できないのですか?あなたのエディタを習得するだけで、タイピングはそれほどありません。 COBOLには「文字列」がないことを忘れないでください。使用しているコンパイラのドキュメントを見てください.CALLのUSINGのリテラルは、 "Extensions"の領域です。 –