Here is also the link to the data structure (in my Github Gist)
https://gist.github.com/BirgittaHauser/15e50a9deb48c354cd43b30344a57c93
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
Modernization ? Education ? Consulting on IBM i
Database and Software Architect  
IBM Champion since 2020
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
"Train people well enough so they can leave, treat them well enough so they
don't want to. " (Richard Branson)
"Learning is experience ? everything else is only information!" (Albert
Einstein)
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Birgitta
Hauser
Sent: Thursday, 25 September 2025 17:19
To: 'RPG programming on IBM i' <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: DSPF Long Shot
Here is a list of all display attributes (incl. Hex-Values):
Display attributes without protect between x'20' and x'3F'
Display attributes with protect between x'A1' and x'BF'
DCL-DS  DSColorHex   Qualified;
//Display-Attributes                       
 DSColAll;
  DSColHexFree             Overlay(DSColAll);
    DDSGRN     VarChar(10) Overlay(DSColHexFree)        inz('GRN');
//DDS Attr. Green                          
    Grn        Char(1)     Overlay(DSColHexFree: *Next) inz(X'20');
//Hex Value Green                          
 
    DDSGrnRi   VarChar(10) Overlay(DSColHexFree: *Next) inz('GRNRI');
//DDS Attr. Green Reverse Intense          
    GrnRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'21');
//Hex Value Green Reverse Intense          
 
    DDSWht     VarChar(10) Overlay(DSColHexFree: *Next) inz('WHT');
//DDS Attr. Green White                    
    Wht        Char(1)     Overlay(DSColHexFree: *Next) inz(X'22');
//Hex Value White                          
 
    DDSWhtRi   VarChar(10) Overlay(DSColHexFree: *Next) inz('WHTRI');
//DDS Attr. White Reverse Intense          
    WhtRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'23');
//Hex Value White Reverse Intense          
 
    DDSGrnUL   VarChar(10) Overlay(DSColHexFree: *Next) inz('GRNUL');
//DDS Attr. Green Underline                
    GrnUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'24');
//Hex Value Green Unerline                 
 
    DDSGrnUlRi VarChar(10) Overlay(DSColHexFree: *Next) inz('GRNULRI');
//DDS Attr. Green Underline Rev.Int.       
    GrnUlRi    Char(1)     Overlay(DSColHexFree: *Next) inz(X'25');
//Hex Value Green Underline Rev.Int.       
 
    DDSWhtUl   VarChar(10) Overlay(DSColHexFree: *Next) inz('WHTUL');
//DDS Attr. White Underline                
    WhtUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'26');
//Hex Value White Underline                
 
    DDSNd      VarChar(10) Overlay(DSColHexFree: *Next) inz('ND');
//DDS Attr. Not Display                    
    ND         Char(1)     Overlay(DSColHexFree: *Next) inz(X'27');
//Hex Value Not Display                    
 
    DDSRed     VarChar(10) Overlay(DSColHexFree: *Next) inz('RED');
//DDS Attr. Red                            
    Red        Char(1)     Overlay(DSColHexFree: *Next) inz(X'28');
//Hex Value Red                            
 
    DDSRedRI   VarChar(10) Overlay(DSColHexFree: *Next) inz('REDRI');
//DDS Attr. Red Reverse Intense            
    RedRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'29');
//Hex Value Red Reverse Intense            
 
    DDSRedBL   VarChar(10) Overlay(DSColHexFree: *Next) inz('REDBL');
//DDS Attr. Red Blink                      
    RedBL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'2A');
//Hex Value Red Blink                      
 
    DDSRedBLRI VarChar(10) Overlay(DSColHexFree: *Next) inz('REDBLRI');
//DDS Attr. Red Blink Rev.Int.             
    RedBLRI    Char(1)     Overlay(DSColHexFree: *Next) inz(X'2B');
//Hex Value Red Blink Rev.Int.             
 
    DDSRedUL   VarChar(10) Overlay(DSColHexFree: *Next) inz('REDUL');
//DDS Attr. Red Underline                  
    RedUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'2C');
//Hex Value Red Underline                  
 
    DDSRedULRI VarChar(10) Overlay(DSColHexFree: *Next) inz('REDULRI');
//DDS Attr. Red Underline Rev.Int.         
    RedULRI    Char(1)     Overlay(DSColHexFree: *Next) inz(X'2D');
//Hex Value Red Underline Rev.Int.         
 
    DDSRedBLUL VarChar(10) Overlay(DSColHexFree: *Next) inz('REDBLUL');
//DDS Attr. Red Blink Underline            
    RedBLUL    Char(1)     Overlay(DSColHexFree: *Next) inz(X'2E');
//Hex Value Red Blink Underline            
 
    DDSNotDsp  VarChar(10) Overlay(DSColHexFree: *Next) inz('NOTDSP');
//DDS Attr. Not Display                    
    NotDsp     Char(1)     Overlay(DSColHexFree: *Next) inz(X'2F');
//Hex Value Not Display                    
 
    DDSTrq     VarChar(10) Overlay(DSColHexFree: *Next) inz('TRQ');
//DDS Attr. Turquois                       
    Trq        Char(1)     Overlay(DSColHexFree: *Next) inz(X'30');
//Hex Value Turquois                       
 
    DDSTrqRI   VarChar(10) Overlay(DSColHexFree: *Next) inz('TRQRI');
//DDS Attr. Turquois Rev.Int.              
    TrqRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'31');
//Hex Value Turquois Rev.Int.              
 
    DDSYlw     VarChar(10) Overlay(DSColHexFree: *Next) inz('YLW');
//DDS Attr. Yellow                         
    Ylw        Char(1)     Overlay(DSColHexFree: *Next) inz(X'32');
//Hex Value Yellow                         
 
    DDSYlwRI   VarChar(10) Overlay(DSColHexFree: *Next) inz('YLWRI');
//DDS Attr. Yellow Reverse Intense         
    YlwRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'33');
//Hex Value Yellow Reverse Intense         
 
    DDSTrqUl   VarChar(10) Overlay(DSColHexFree: *Next) inz('TRQUL');
//DDS Attr. Turquois underline             
    TrqUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'34');
//Hex Value Turquois Underline             
 
    DDSTrqUlRi VarChar(10) Overlay(DSColHexFree: *Next) inz('TRQULRI');
//DDS Attr. Turquois Underline Rev.Int.    
    TrqULRI    Char(1)     Overlay(DSColHexFree: *Next) inz(X'35');
//Hex Value Turquois Underline Rev.Int.    
 
    DDSYlwUL   VarChar(10) Overlay(DSColHexFree: *Next) inz('YLWUL');
//DDS Attr. Yellow Underline               
    YlwUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'36');
//Hex Value Yellow Underline               
 
    DDSYlwULRI VarChar(10) Overlay(DSColHexFree: *Next) inz('YLWULRI');
//DDS Attr. Yellow Underline Rev.Int.      
    YlwULRI    Char(1)     Overlay(DSColHexFree: *Next) inz(X'37');
//Hex Value Yellow Underline Rev.Int.      
 
    DDSColNd   VarChar(10) Overlay(DSColHexFree: *Next) inz('COLND');
//DDS Attr. Color  Not Dspl.               
    ColND      Char(1)     Overlay(DSColHexFree: *Next) inz(X'38');
//Hex Value Color  Not Dspl.               
 
    DDSPnk     VarChar(10) Overlay(DSColHexFree: *Next) inz('PNK');
//DDS Attr. Pink                           
    Pnk        Char(1)     Overlay(DSColHexFree: *Next) inz(X'39');
//Hex Value Pink                           
 
    DDSPnkRI   VarChar(10) Overlay(DSColHexFree: *Next) inz('PNKRI');
//DDS Attr. Pink   Reverse Intense         
    PnkRI      Char(1)     Overlay(DSColHexFree: *Next) inz(X'3A');
//Hex Value Pink   Reverse Intense         
 
    DDSBlu     VarChar(10) Overlay(DSColHexFree: *Next) inz('BLU');
//DDS Attr. Blue                           
    Blu        Char(1)     Overlay(DSColHexFree: *Next) inz(X'3B');
//Hex Value Blue                           
 
    DDSPnkUl   VarChar(10) Overlay(DSColHexFree: *Next) inz('PNKUL');
//DDS Attr. Pink   Underline               
    PnkUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'3C');
//Hex Value Pink   Underline               
 
    DDSPnkUlRi VarChar(10) Overlay(DSColHexFree: *Next) inz('PNKULRI');
//DDS Attr. Pink   Underline Rev.Int.      
    PnkULRO    Char(1)     Overlay(DSColHexFree: *Next) inz(X'3D');
//Hex Value Pink   Underline Rev.Int.      
 
    DDSBluUl   VarChar(10) Overlay(DSColHexFree: *Next) inz('BLUUL');
//DDS Attr. Blue   Underline               
    BluUL      Char(1)     Overlay(DSColHexFree: *Next) inz(X'3E');
//Hex Value Blue   Underline               
 
    DDSColNotDsp
             VarChar(10) Overlay(DSColHexFree: *Next) inz('COLNOTDSP');
//DDS Attr. Color  not display             
    ColNotDsp    Char(1)   Overlay(DSColHexFree: *Next) inz(X'3F');
//Hex Value Color  not display             
 
  ArrColHexFree              Dim(32)  Overlay(DSColHexFree);
//Array Not Protected                      
     ArrColFree  VarChar(10)          Overlay(ArrColHexFree);
//Array DDS Attr.  Not Protected           
     ArrHexFree  Char(1)              Overlay(ArrColHexFree: *Next);
//Array Hex Values Not Protected           
 
  DSColHexProt             Overlay(DSColAll: *Next);
    DDSPrGrn   VarChar(10) Overlay(DSColHexProt)        inz('PRGRN');
//DDS Attr. Prot. Green                    
    PrGrn      Char(1)     Overlay(DSColHexProt: *Next) inz(X'A0');
//Hex Value Prot. Green                    
 
    DDSPrGrnRI VarChar(10) Overlay(DSColHexProt: *Next) inz('PRGRNRI');
//DDS Attr. Prot. Green Reverse Intense    
    PrGrnRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'A1');
//Hex Value Prot. Green Reverse Intense    
 
    DDSPrWht   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRWHT');
//DDS Attr. Prot. White                    
    PrWht      Char(1)     Overlay(DSColHexProt: *Next) inz(X'A2');
//Hex Value Prot. White                    
 
    DDSPrWhtRi VarChar(10) Overlay(DSColHexProt: *Next) inz('PRWHTRI');
//DDS Attr. Prot. White Reverse Intense    
    PrWhtRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'A3');
//Hex Value Prot. White Reverse Intense    
 
    DDSPrGrnUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRGRNUL');
//DDS Attr. Prot. Green Underline          
    PrGrnUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'A4');
//Hex Value Prot. Green Unerline           
 
    DDSPrGrnUlRi
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRGRNULRI');//DDS Attr. Prot. Green Underline Rev.In  
    PrGrnULRI  Char(1)     Overlay(DSColHexProt: *Next) inz(X'A5');
//Hex Value Prot. Green Underline Rev.In  
 
    DDSPrWhtUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRWHTUL');
//DDS Attr. Prot. White Underline         
    PrWhtUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'A6');
//Hex Value Prot. White Underline         
 
    DDSPrNd    VarChar(10) Overlay(DSColHexProt: *Next) inz('PRND');
//DDS Attr. Prot. Not Display             
    PrND       Char(1)     Overlay(DSColHexProt: *Next) inz(X'A7');
//Hex Value Prot. Not Display             
 
    DDSPrRed   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRRED');
//DDS Attr. Prot. Red                     
    PrRed      Char(1)     Overlay(DSColHexProt: *Next) inz(X'A8');
//Hex Value Prot. Red                     
 
    DDSPrRedRI VarChar(10) Overlay(DSColHexProt: *Next) inz('PRREDRI');
//DDS Attr. Prot. Red Reverse Intense     
    PrRedRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'A9');
//Hex Value Prot. Red Reverse Intense     
 
    DDSPrRedBl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRREDBL');
//DDS Attr. Prot. Red Blink               
    PrRedBL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'AA');
//Hex Value Prot. Red Blink               
 
    DDSPrRedBlRi
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRREDBLRI');//DDS Attr. Prot. Red Blink Rev.Int.      
    PrRedBLRI  Char(1)     Overlay(DSColHexProt: *Next) inz(X'AB');
//Hex Value Prot. Red Blink Rev.Int.      
 
    DDSPrRedUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRREDUL');
//DDS Attr. Prot. Red Underline           
    PrRedUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'AC');
//Hex Value Prot. Red Underline           
 
    DDSPrRedUlRI
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRREDULRI');//DDS Attr. Prot. Red Underline Rev.Int.  
    PrRedULRI  Char(1)     Overlay(DSColHexProt: *Next) inz(X'AD');
//Hex Value Prot. Red Underline Rev.Int   
 
    DDSPrRedUlBl
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRREDULBL');//DDS Attr. Prot. Red Underline Blink     
    PrRedULBL  Char(1)     Overlay(DSColHexProt: *Next) inz(X'AE');
//Hex Value Prot. Red Underline Blink     
 
    DDSPrNotDsp
               VarChar(10) Overlay(DSColHexProt: *Next) inz('PRNotDsp');
//DDS Attr. Prot. not Display             
    PrNotDsp   Char(1)     Overlay(DSColHexProt: *Next) inz(X'AF');
//Hex Value Prot. not Display             
 
    DDSPrTrq   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRTRQ');
//DDS Attr. Prot. Turquois                
    PrTrq      Char(1)     Overlay(DSColHexProt: *Next) inz(X'B0');
//Hex Value Prot. Turquois                
 
    DDSPrTrqRi VarChar(10) Overlay(DSColHexProt: *Next) inz('PRTRQRI');
//DDS Attr. Prot. Turquois Rev.Int.       
    PrTrqRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B1');
//Hex Value Prot. Turquois Rev.Int.       
 
    DDSPrYlw   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRYLW');
//DDS Attr. Prot. Yellow                  
    PrYlw      Char(1)     Overlay(DSColHexProt: *Next) inz(X'B2');
//Hex Value Prot. Yellow                  
 
    DDSPrYlwRi VarChar(10) Overlay(DSColHexProt: *Next) inz('PRYLWRI');
//DDS Attr. Prot. Yellow Reverse Intense  
    PrYlwRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B3');
//Hex Value Prot. Yellow Reverse Intense  
 
    DDSPrTrqUL VarChar(10) Overlay(DSColHexProt: *Next) inz('PRTRQUL');
//DDS Attr. Prot. Turquois underline      
    PrTrqUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B4');
//Hex Value Prot. Turquois Underline      
 
    DDSPrTrqUlRi
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRTRQULRI');//DDS Attr. Prot. Turquois underline      
    PrTrqULRI  Char(1)     Overlay(DSColHexProt: *Next) inz(X'B5');
//Hex Value Prot. Turquois Underline      
 
    DDSPrYlwUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRYLWUL');
//DDS Attr. Prot. Turquois Underline Rev  
    PrYlwUK    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B6');
//Hex Value Prot. Turquois Underline Rev  
 
    DDSPrColNd VarChar(10) Overlay(DSColHexProt: *Next) inz('PRCOLND');
//DDS Attr. Prot. Yellow Underline        
    PrColND    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B7');
//Hex Value Prot. Yellow Underline        
 
    DDSPrPnk   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRPNK');
//DDS Attr. Prot. Yellow Underline Rev.I  
    PrPnk      Char(1)     Overlay(DSColHexProt: *Next) inz(X'B8');
//Hex Value Prot. Yellow Underline Rev.I  
 
    DDSPrPnkRi VarChar(10) Overlay(DSColHexProt: *Next) inz('PRPNKRI');
//DDS Attr. Prot. Color  Not Dspl.        
    PrPnkRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'B9');
//Hex Value Prot. Color  Not Dspl.        
 
    DDSPrBlu   VarChar(10) Overlay(DSColHexProt: *Next) inz('PRBLU');
//DDS Attr. Prot. Pink                    
    PrBlu      Char(1)     Overlay(DSColHexProt: *Next) inz(X'BA');
//Hex Value Prot. Pink                    
 
    DDSPrBluRi VarChar(10) Overlay(DSColHexProt: *Next) inz('PRBLURI');
//DDS Attr. Prot. Pink   Reverse Intense  
    PrBluRI    Char(1)     Overlay(DSColHexProt: *Next) inz(X'BB');
//Hex Value Prot. Pink   Reverse Intense  
 
    DDSPrPnkUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRPNKUL');
//DDS Attr. Prot. Blue                    
    PrPnkUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'BC');
//Hex Value Prot. Blue                    
 
    DDSPrPnkUlRI
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRPNKULRI');//DDS Attr. Prot. Pink   Underline        
    PrPnkULRI  Char(1)     Overlay(DSColHexProt: *Next) inz(X'BD');
//Hex Value Prot. Pink   Underline        
 
    DDSPrBluUl VarChar(10) Overlay(DSColHexProt: *Next) inz('PRBLUUL');
//DDS Attr. Prot. Blue   Underline        
    PrBluUL    Char(1)     Overlay(DSColHexProt: *Next) inz(X'BE');
//Hex Value Prot. Blue   Underline        
 
    DDSPrColNotD
               VarChar(10) Overlay(DSColHexProt: *Next)
inz('PRCOLNOTD');//DDS Attr. Prot. Color not Displayed     
    PrColNotD  Char(1)     Overlay(DSColHexProt: *Next) inz(X'BF');
//Hex Value Prot. Color not Displayed     
 
ArrColHexProt              Dim(32) Overlay(DSColHexProt);
//Array DDS + Hex Protect                  
  ArrColProt   VarChar(10)         Overlay(ArrColHexProt);
//Array DDS Attributes Protect             
  ArrHexProt   Char(1)             Overlay(ArrColHexProt: *Next);
//Array DDS Values Protect                 
 
ArrColorHex                Dim(64) Overlay(DSColAll);
//Array ALL DDS + Hext Not Protected/Prot  
  ArrColor     VarChar(10) Overlay(ArrColorHex);
//Array ALL DDS Attributes Not Protect/Pr  
  ArrHex       Char(1)     Overlay(ArrColorHex: *Next);
//Array ALL Hex Values     Not Protected/  
End-DS;
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
Modernization ? Education ? Consulting on IBM i
Database and Software Architect  
IBM Champion since 2020
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
"Train people well enough so they can leave, treat them well enough so they
don't want to. " (Richard Branson)
"Learning is experience ? everything else is only information!" (Albert
Einstein)
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Brian
Parkins
Sent: Thursday, 25 September 2025 11:56
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: DSPF Long Shot
If it helps, check out the 5250 Information Display System Functions
Reference manual:
https://archive.org/details/bitsavers_ibm5250525formationDisplaySystemFuncti
onsReference_6100222/page/n3/mode/2up
See page 2-143 (195) for the table of Screen Attributes. (The manual can de
downloaded in PDF format).
IIRC, the trailing attribute byte is always set to X'20' (Normal/Green).
HTH,
Brian.
On 24/09/2025 04:03, Dan Bale wrote:
In your DSPF, get rid of the display attributes defined on the header
field.
X'3E' is the display attribute for blue, underline X'20' is the 
display attribute for green In your RPG, concatenate x'3E' + 
%trim(your header text field) + x'20'
Then use your centering function on that concatenation.
- Dan Bale
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of 
Steve M
Sent: Tuesday, September 23, 2025 10:46 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: DSPF Long Shot
Almost absolutely certain the answer to this is "no", but it's never a
final no until this group has their say/input.
DSPF format with a line for a header text.  Field defined as character 80
bytes.  Screen to screen the text in the header will change.  Field
attributes are blue and underscore.
On the first screen the actual text is 30 bytes. There is an centering
function that is called before loading the text to the screen field so it's
right in the middle.
Next screen the actual text is 50 bytes.  (I know you all see where this
is going).  Yes, it's centered, as well.
Here's the question:  I don't want the underscores on each side of the
actual text (they look like airplane wings) (_________Here is the
text_________) - so, is there a way to only underline the actual
words/letters?  Maybe I've just forgotten something really simple here
(always a good chance on that one).
Lots of really smart people follow these pages so hoping for any idea that
may "pretty-up" the screen.
As always, thanks to all in advance.
Steve M.
*** CONFIDENTIALITY NOTICE: The information contained in this 
communication may be confidential, and is intended only for the use of 
the recipients named above. If the reader of this message is not the 
intended recipient, you are hereby notified that any dissemination, 
distribution, or copying of this communication, or any of its 
contents, is strictly prohibited. If you have received this 
communication in error, please return it to the sender immediately and 
delete the original message and any copy of it from your computer 
system. If you have any questions concerning this message, please 
contact the sender. ***
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit: 
https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
As an Amazon Associate we earn from qualifying purchases.