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.