det info needed reg subfiles

Posted on 2003-10-30
Last Modified: 2007-11-27
what is an expanding subfile???
Question by:kavithaSuresh
  • 6
  • 3
LVL 14

Expert Comment

ID: 9656850
An expanding subfile is where you have a subfile with multiple lines where the key information is on the first line and secorday infor in on the other lines.

Using SFLDROP/SFLFOLD and a function key you can show/hide the extra information

LVL 14

Expert Comment

ID: 9656860

If you need an example let me know


Author Comment

ID: 9656874
thanks Dave ..........would u give a example.....i really wanna get to know in det abt that.
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

LVL 14

Accepted Solution

daveslater earned 125 total points
ID: 9657196
attached is code for a quick demo (it is in RPGLE)
Once the display/pgm are craeted run as followes

Call the program. The subfile is expanded
Press ENTER the subfile collapses
Press enter then program quits

Call the program again
Press F10. This will toggle betwen collapsed and expanded


A*                                                               *      
A* System Name...  DEMONSTRATE SFLDROP/SFLFOLD                   *      
A*                                                               *      
A* AUTHOR........  D.SLATER                                      *      
A*                                                               *      
A                                      DSPSIZ(24 80 *DS3)              
A                                      CHGINPDFT(UL)                    
A                                      MSGLOC(24)                      
A          R F01SFL                    SFL                              
A            LINE01        30   O  6  2                                
A            LINE02        30   O  7  4                                
A            LINE03        30   O  8  5                                
A          R F01CTL                    SFLCTL(F01SFL)                  
A  31                                  SFLDSP                          
A                                      SFLDSPCTL OVERLAY                    
A N31                                  SFLCLR                              
A  40                                  SFLDROP(CF10)                        
A N40                                  SFLFOLD(CF10)                        
A                                      SFLSIZ(0006)                        
A                                      SFLPAG(0005)                        
A            RRN            3  0H      SFLRCDNBR                            
A          R F01FTR                                                        
A                                      OVERLAY                              
A                                 22  2'                                  -
A                                                                         -
A                                               '                          
A                                      DSPATR(UL)                          
A                                 23  2'F10=More / Less Detail'            


 *                                                               *                          
 * System Name...  DEMONSTRATE SFLDROP/SFLFOLD                   *                          
 *                                                               *                          
 * AUTHOR........  D.SLATER                                      *                          
 *                                                               *                          
FSFLDROP   CF   E             WORKSTN SFILE(F01SFL:RRN)                                    
D I               S              3  0                                                      
 ** file subfile with dumm records                                                          
C                   DO        30            I                                              
C                   EVAL      LINE01='Record ' + %editc(i:'Z') +                            
C                             ' Line 01'                                                    
C                   EVAL      LINE02='Record ' + %editc(i:'Z') +                            
C                             ' Line 01'                                                    
C                   EVAL      LINE03='Record ' + %editc(i:'Z') +                            
C                             ' Line 01'                                                    
C                   ADD       1             rrn                                      
C                   WRITE     F01SFL                                                  
C                   ENDDO                                                            
 ** set subfile at first record                                                      
C                   EVAL      *IN31=*ON                                              
C                   EVAL      RRN=1                                                  
 ** show subfile expanded                                                            
 ** ie SFLFOLD is active                                                              
C                   WRITE     F01FTR                                                  
C                   EXFMT     F01CTL                                                  
 ** show subfile collapsed                                                            
 ** ie SFLDROP is active                                                              
C                   EVAL      *IN40=*ON                                              
C                   EXFMT     F01CTL                                                  
C                   EVAL      *INlr=*ON                  


LVL 14

Expert Comment

ID: 9671691
Just a qick tip
As you may have noticed using this method does not return control to the program.
If you need this functionallity the what I do is:

A  40                                  SFLDROP(CF22)                        
A N40                                  SFLFOLD(CF22)              
A                                      CF10(10 'Toggle')

Then in the rpg condition *in40 if F10 is pressed then re-display
C                   if        *IN10
C                   EVAL      *in40 = not *in40
C                   endif


Author Comment

ID: 9684421
Dave what do u think about rollup/roll down or page up/down for expanding subfiles?????????????????????????

is the functionality of these keys similar to that of F10-toggle.?????????

and can u tell me where these expanding subfiles are used???????
LVL 14

Expert Comment

ID: 9685498
I think this is what you mean by page up/down
Your are building the subfile one page at a time.
Say you display the subfile with SFLFOLD active and the user presses F10 to collapse it.
The user then presses page down.
When you re-display the screen SFLFOLD is active so the subfile will re-display as expanded.
This is why I gave the previous tip

Condition SFLFOLD/SFLDROP on CF22 (or any other function key that is not used) This is only there to make the keyword valid and if the user presses it the subfile will change.

Display the F10=Expand ant the bottom and active F10 in the display. Use F10 in the program to condition the keywords i.e. reverse the condition on *IN40. Then when the user presses page down the display stays the same.

What I use expanding subfiles for are look up tables. Say you have a customer lookup window

Sel  Cust Id Del Seq  Cust Name
     Cust01   000       Cust name 01
     Cust02   000       Cust name 02
     Cust03   000       Cust name 03
     Cust03   001       Cust name 03
     Cust04   000       Cust name 04

F10=More Detail
In most situations a user will be able to identify the customer from the basic information, a new person may need additional information or if the names are similar so when the press F10 you get the first line of the address etc as confirmation

Sel  Cust Id Del Seq  Cust Name
     Cust01   000     Cust name 01
                            Address Line 1
     Cust02   000     Cust name 02
                            Address Line 1
     Cust03   000     Cust name 03
                            Address Line 1
     Cust03   001     Cust name 03
                            Address Line 1
     Cust04   000     Cust name 04
                            Address Line 1
F10=Less Detail


Author Comment

ID: 9685592
hi Dave,
OK .................Thank u sooooooooo muchhhhhhhh.......that was crystal clear.i am very new to RPG/400 ...only for the past 3 months i have been working on this.....This expanding subfile is one concept that i came across while working ...similarly........i came across one program which was written by my senior.

DWPError          DS                                                    
DEBytesP                  1      4B 0 INZ(40)                          
DEBytesA                  5      8B 0                                  
DEMsgID                   9     15                                      
DEReserverd              16     16                                      
DEData                   17     56                                      
DHTTPHeader       C                   CONST('Content-type: text/html')  
DNewLine          C                   CONST(X'15')                      
DWrtDta           S           1024                                      
DWrtDtaLen        S              9B 0                                  
C                   EXSR      $Main                                    
C                   eval      *INLR = *On                              
C     $Main         BEGSR                                              
C                   eval      WrtDta = '<html><head>' +                
C                                      '<title>Hello World</title>' +  
 C                                      '</head><body>' +          
 C                                      'Hello World!' +            
 C                                      '</body></html>' +          
 C                                      NewLine                    
 C                   EXSR      $WrStout                            
 C                   ENDSR                                          
 C     $WrStout      BEGSR                                          
 C     ' '           CHECKR    WrtDta:1024   WrtDtaLen              
 C                   CALLB     'QtmhWrStout'                        
 C                   PARM                    WrtDta                
 C                   PARM                    WrtDtaLen              
 C                   PARM                    WPError                
 C                   ENDSR                                          
 C           *INZSR        BEGSR                                          
 C                   eval      WrtDta = %trim(HTTPHeader) +        
 C                                      NewLine + NewLine          
 C                   EXSR      $WrStout                            
 C                   ENDSR                  

i don't understand it can u help me to?????????                      
LVL 14

Expert Comment

ID: 9685633
This is writing data to the HTTP server using the system API's
It is simply a test peogram to write "Hello world" to a web browser using HTML.

I have done some work on this but not using appachie. You would be better postine a new question if you need more info. Here is a link.

Good luck with your AS/400 career


Featured Post

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Background Information Recently I have fixed file server permission issues for one of my client. The client has 1800 users and one Windows Server 2008 R2 domain joined file server with 12 TB of data, 250+ shared folders and the folder structure i…
With User Account Control (UAC) enabled in Windows 7, one needs to open an elevated Command Prompt in order to run scripts under administrative privileges. Although the elevated Command Prompt accomplishes the task, the question How to run as script…
In a recent question ( here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question