2017-03-08 18 views
0

給定一個最多256個字符的字符串,您將使用IBM Mainframe Assembler指令來檢測並指出該字符串中第一次出現特定的單字節分隔符字符?如何在IBM Manframe Assembler中檢測分隔符?

+1

您有嘗試過什麼嗎? –

+1

回答自己的問題會加快整個過程。注意,分享或不分享,廣泛的問題仍然是無關緊要的。 –

+0

我無法想象這個問題怎麼可能更精確。這些規範非常明確:「IBM大型機彙編程序指令」將「檢測並指向在256個字符的字符串內首次發生特定的單字節分隔符字符」。我認爲這裏的人理解這些條款。我是否應該包含「彙編指令」,「字符串」和「分隔符」的定義? – dstaudacher

回答

0

該指令是TRT,「翻譯和測試」。 例如,要找到字符串中的第一個空格(X'40'):

[...] 
    TRT STRING,HEXTBL 
[...] 
STRING DC C'WHERE IS THE FIRST SPACE?' 
HEXTBL EQU * 
    DC X'00000000000000000000000000000000' VALUES X'00' - X'0F' 
    DC X'00000000000000000000000000000000' VALUES X'10' - X'1F' 
    DC X'00000000000000000000000000000000' VALUES X'20' - X'2F' 
    DC X'00000000000000000000000000000000' VALUES X'30' - X'3F' 
    DC X'FF000000000000000000000000000000' VALUES X'40' - X'4F' 
    DC X'00000000000000000000000000000000' VALUES X'50' - X'5F' 
    DC X'00000000000000000000000000000000' VALUES X'60' - X'6F' 
    DC X'00000000000000000000000000000000' VALUES X'70' - X'7F' 
    DC X'00000000000000000000000000000000' VALUES X'80' - X'8F' 
    DC X'00000000000000000000000000000000' VALUES X'90' - X'9F' 
    DC X'00000000000000000000000000000000' VALUES X'A0' - X'AF' 
    DC X'00000000000000000000000000000000' VALUES X'B0' - X'BF' 
    DC X'00000000000000000000000000000000' VALUES X'C0' - X'CF' 
    DC X'00000000000000000000000000000000' VALUES X'D0' - X'DF' 
    DC X'00000000000000000000000000000000' VALUES X'E0' - X'EF' 
    DC X'00000000000000000000000000000000' VALUES X'F0' - X'FF' 
    [...]  
+0

在這個例子中,「HEXTBL」是一個256字節的十六進制值表,除了X'FF'偏移+ X'40'處的所有二進制零。這對應於一個空格字符(X'40')的EBCDIC值,因此使得X'40'(空格)成爲待檢測的分隔符。在執行TRT指令後,R1將指向找到的第一個空格字符(如果有的話),並將相應的表值(此例中爲x'FF')加載到R2的低位字節中(即R2 = X' ?????? FF')。兩位條件代碼的值也爲01,表示在'STRING'的最後一個字節之前發現了一個分隔符*。 – dstaudacher

+1

您可以使用左下角的[編輯]按鈕(https://stackoverflow.com/posts/42674817/edit)編輯答案。另一件事:我不是IBM大型機的專家,但不應該給予TRT長度的字段? 「C」不是一個不太模糊的表示空格字符的方式嗎?參見[http://faculty.cs.niu.edu/~byrnes/csci360/notes/360trt.htm](http://faculty.cs.niu.edu/~byrnes/csci360/notes/360trt。htm) –

+0

IBM Assembler自動計算'STRING'的長度,如果未指定顯式長度,則假定計算的長度。這個長度可以通過一個明確的規範來覆蓋:(例如:「TRT STRING(5),HEXTBL」將不會找到空間分隔符,因爲它位於位置6)。該長度也可以在運行時指定,可以通過將其直接插入指令(不推薦)或通過以TRT爲目標的EXecute指令來指定。 – dstaudacher