RE: DSPF Long Shot
"Birgitta Hauser" <Hauser-bRAHsVz2yv4TVIZRl6KS/[email protected]>
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <[email protected]> |
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-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org> On Behalf Of Birgitta Hauser Sent: Thursday, 25 September 2025 17:19 To: 'RPG programming on IBM i' <[email protected]> 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-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org> On Behalf Of Brian Parkins Sent: Thursday, 25 September 2025 11:56 To: [email protected] 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-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org> On Behalf Of > Steve M > Sent: Tuesday, September 23, 2025 10:46 PM > To: RPG programming on IBM i <[email protected]> > 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: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions. -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions. -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.