Панель не выполняется) Секция ПНЦ

Я пишу панель ISPF с элементами "наведи и снимай". Элементы говорят "да" и "нет", а курсор по умолчанию должен указывать на "да".

1-й случай:
Декларация полей: + TYPE(INPUT) PAS(ON)
Когда я использую это объявление, панель закрывается нажатием [enter] и генерацией rc = 0. Однако секция)PNTS не запускается.

2-й случай:
Декларация полей: + TYPE (PS)
Раздел)PNTS запускается нажатием [enter]. Тем не менее, я не могу установить .cursor на поле "да".

Я пробовал разные способы с разными именами полей (например, ZPS00001). Я пытался смоделировать Point and Shoot с Rexx, но ничего не получалось.

1 ответ

Решение

Нажатие кнопки ввода приведет к обработке полей точек и снимков. Однако курсор должен находиться на одном из полей в разделе)PNTS, чтобы установить значение, связанное с полем. Звучит так, как будто панель неправильно закодирована. PAS должен использоваться для полей ввода или вывода, а PS должен использоваться для текстовых полей. Например, если у вас есть следующая панель:

)ATTR                                
 $ TYPE(PS)                          
 ! TYPE(OUTPUT)  PAS(ON)             
)BODY                                
+ --------------------- +            
+ ===>_ZCMD              +           
+                                    
$Field1  : _FLD   +                  
$Field2  : _ABC   +                  
$Field3  : !IN1   +                  
$Field4  : !IN2   +                  
)INIT                                
&INV1 = 111                          
&INV2 = 222                          
&INV3 = 333                          
)REINIT                              
REFRESH(*)                           
)PROC           
)PNTS                                    
FIELD(IN1) VAR(INV1) VAL(ON)             
FIELD(IN2) VAR(INV2) VAL(OFF)            
FIELD(ZPS00001) VAR(INV3) VAL(1)         
FIELD(ZPS00002) VAR(INV3) VAL(2)         
FIELD(ZPS00003) VAR(INV3) VAL(3)         
FIELD(ZPS00004) VAR(INV3) VAL(4)         
)END                                     

Со следующим REXX exec:

/* REXX */                                  
RCC = 0                                     
INV1 = 0                                    
INV2 = 1                                    
DO WHILE RCC = 0                            
   ADDRESS ISPEXEC 'DISPLAY PANEL(PAS)'     
   RCC = RC                                 
   SAY INV1 '-' INV2 '-' INV3               
END                                         

Вы можете проверить значения inv1, inv2 и inv3 в зависимости от того, где вы поместили курсор, когда нажмете ввод. Вы получите 1, 2, 3 или 4, если курсор находится в поле field1, field2, field3 или field4. Если он включен на IN1 или IN2, то вы включаете или выключаете. Все зависит от того, где находится курсор при нажатии ENTER. Исходя из примера, вы можете увидеть, как стрелять и стрелять не ограничивается меню. Надеюсь, пример поможет.

Марв Найт

Другие вопросы по тегам