det info needed reg subfiles

what is an expanding subfile???
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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


If you need an example let me know

kavithaSureshAuthor Commented:
thanks Dave ..........would u give a example.....i really wanna get to know in det abt that.
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

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                  



Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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

kavithaSureshAuthor Commented:
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???????
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

kavithaSureshAuthor Commented:
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?????????                      
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

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
IBM System i

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.