При использовании z / OS High Level Assembler (HLASM) есть ли способ вернуть приравненный символ (определенный через EQU) в неопределенное состояние? - PullRequest
1 голос
/ 11 марта 2020

В z / OS HLASM мне интересно, есть ли способ "обойти" символ, определенный с помощью инструкции EQU. Например:

MyValue  EQU 999
...
         LHI R5,MyValue
...
MyValue  UNEQU     <===== or something that returns MyValue to the undefined state for the next statement in the assembly

Я полагаю, что это было бы в принципе похоже на DROP после ИСПОЛЬЗОВАНИЯ, чтобы «охватить» отношения между регистром и DSECT, но в этом случае это будет означать «этот символ действительно только в пределах между EQU и 'unEQU'. "

Спасибо, Скотт

1 Ответ

3 голосов
/ 12 марта 2020

EQU создает символ и однажды определил его там на всю жизнь. Это не похоже на #define прагму в C.

Справочное руководство IBM по HLASM и EQU Инструкция

По сути вы создаете символ, в который он вводится и не может быть удален. В руководстве это конкретно не указано, но, учитывая, что после определения символа с помощью EQU его также нельзя изменить.

Для ухмылок я попробовал несколько вариантов, и это было результатом попытки переопределить символ AB * 1014. *

  Active Usings: None                                                
  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement           
000000                00000 00000     1 EQUTEST CSECT                
                      00001           2 ABC EQU 1                    
                      00002           3 ABC EQU 2                    
** ASMA043E Previously defined symbol - ABC                          
** ASMA435I Record 3 in USER1.TEST.SOURCE(EQUTEST) on volume: T70502 
...