Ibm midrange F10功能不将控制返回到程序

Ibm midrange F10功能不将控制返回到程序,ibm-midrange,rpgle,Ibm Midrange,Rpgle,我有一个显示文件,我在其中添加了两个额外的字段,这两个字段在按f10时出现-fold/drop。当用户折叠记录时,页脚显示应更改为f10=展开。当显示屏展开时,显示屏应更改为f10=折叠 A*************************************************************** A* LIST OF LOADS WITH BOL SUBFILE CONTROL A******

我有一个显示文件,我在其中添加了两个额外的字段,这两个字段在按f10时出现-fold/drop。当用户折叠记录时,页脚显示应更改为f10=展开。当显示屏展开时,显示屏应更改为f10=折叠

         A***************************************************************
     A*  LIST OF LOADS WITH BOL SUBFILE CONTROL                      
     A***************************************************************
     A          R RLG610C1                  SFLCTL(RLG610S1)         
     A                                      SFLSIZ(0011)             
TPA01A                                      SFLPAG(0005)             
     A                                      OVERLAY                  
     A N71                                  SFLDSP                   
     A N71                                  SFLDSPCTL                
     A  71                                  SFLCLR                   
     A  91                                  SFLEND(*MORE)            
TPA01A N45                                  SFLDROP(CF10)            
TPA01A  45                                  SFLFOLD(CF10)            
TPA01A                                      SFLMODE(&MODE)           
     A            RRN            4S 0H      SFLRCDNBR                
页脚字段设置如下:

TPA01A  45                             23 25'F10=Fold'    
TPA01A                                      COLOR(BLU)    
TPA01A N45                             23 25'F10=Unfold'  
TPA01A                                      COLOR(BLU)    
问题是,当用户按下f10时,显示会按预期变化。但要更改页脚,需要按enter键

下面是一段代码,它根据*IN45指示器字段值控制折叠/展开选项的显示。但只有当你按下回车键时,程序的控制才会到达这里,我希望只要按f10键,控制就会返回到程序

If Mode = '1';                
            *IN45 = '0';                
          ElseIf Mode = '0';            
            *IN45 = '1';                
          EndIf;    
基本上,现在我想知道SFLFOLD和SFLDROP是否将控制权返回给程序

绝望地求救

@查尔斯

我已经试过你提到的查尔斯了。但它就是不起作用

     A          R RLG610C1                  SFLCTL(RLG610S1)      
     A                                      CF10(10 'FOLD/UNFOLD')
     A                                      SFLSIZ(0011)          
TPA01A                                      SFLPAG(0005)          
     A                                      OVERLAY               
     A N71                                  SFLDSP                
     A N71                                  SFLDSPCTL             
     A  71                                  SFLCLR                
     A  91                                  SFLEND(*MORE)         
TPA01A N45                                  SFLDROP(CF10)         
TPA01A  45                                  SFLFOLD(CF10)         
按F10键时,折叠/展开工作正常。但是控件根本不进入程序。我甚至试着把它放在文件级。即使在那里,它也不起作用。欢迎任何建议。

5250设备是(相对)智能设备,而不是哑终端

SFLFOLD和SFLDROP是在设备上处理的,因此当按下F10时,没有控件不会返回到程序

只需让页脚包含

F10=Fold/Unfold
如果确实希望将控制权返回到程序,请在子文件控制记录中将F10配置为常规CF/CA密钥。并在SFLFOLD/SFLDROP关键字中使用伪Fxx键

     A                                      CF10(10 'FOLD/UNFOLD')         
TPA01A N45                                  SFLDROP(CF24)         
TPA01A  45                                  SFLFOLD(CF24) 

因此,控件将返回到您的程序。您必须检查F10是否被按下,而不是检查模式,因为系统没有启动开关

嗨,查尔斯,我甚至试过这个。。但是控件仍然没有返回到程序中。您是将它放在子文件记录中,还是放在子文件控制记录中?试试另一个。老实说,我不确定它是否会起作用……但我似乎记得看到页脚发生了变化……嗨,查尔斯,我试着把它放在子文件控制记录和显示文件级别。在子文件记录级别放置导致编译失败问题是,为什么在子文件控制格式级别或显示文件级别定义CF10不起作用?是因为它是在SFLFOLD中定义的吗?当编译失败时,您会得到什么消息?