我想傳遞一個字符串作爲CALL
語句的參數。如何處理CALL語句的文字作爲參數?
CALL "SOMEPROGRAM" USING "SomeStringLiteralArg"
我必須定義的參數作爲調用的子程序聯動項目:
LINKAGE SECTION.
77 SOME-STRING-ARGUMENT PIC X(20).
這樣的作品,但是當我通過一個字符串少於20個字符,在運行時就開始抱怨:
通過使用項目(#1)小於相應的LINKAGE項目。
給定的字符串文字長度必須爲20個字符。但也有原因,我傳遞一個字符串文字作爲參數:
我懶得來定義我傳遞給程序的每個項目一個臨時變量。對於傳遞給程序的每個項目,在工作存儲器中有100個具有不同長度的「臨時」變量會使程序不必要地混亂。MOVE "ShortStrLit" TO SOME-TEMP-VAR CALL "SOMEPROGRAM" USING SOME-TEMP-VAR
我也不想手動墊字符串文字匹配的20個字符的所需長度:
CALL "SOMEPROGRAM" USING "shortStrLit "
我的一個問題是,或課程:怎麼能我傳遞一個字面作爲CALL
聲明的參數?但是,更重要的是,潛在的問題是:如何處理文字作爲處理CALL
語句的參數?例如,如果我通過9
,它被解釋爲內容爲「9」的字符串,還是編譯時轉換爲整數?
我在Windows上運行的微聚焦ACUCOBOL-GT 9.2.4這裏10
編譯器和操作系統,請。該消息的完整參考(如果有消息編號)。它是AcuCOBOL嗎? http://community.microfocus.com/microfocus/cobol/extend_and_acucobol/w/knowledge_base/17365.item-passed-smaller-than-linkage-section-item.aspx –
如果你打算成爲唯一的人,在這個項目上工作,隨時都可以隨心所欲。下一次看節目時不要問問題。如果不是的話,如果別人將在未來某個時候看這個節目,我會建議反對。每當有人看這個節目時,你的懶惰就是別人的額外時間。 –
通過PROCEDURE DIVISION分散的文字(超出自定義用途,比如ADD 1 TO COUNT-OF-RECORDS)是一個壞主意。爲什麼不能在數據定義上使用VALUE子句。這不是真的打字,只是掌握你的編輯。請記住,或者注意,COBOL沒有「字符串」。查看你正在使用的編譯器的文檔,在CALL上的USING中的文字是「擴展」的區域。 –