Sold Out
Book Categories |
Preface | xv | |
Chapter 1 | Performance Starts with Program Design | 1 |
A Thousand-Mile Journey Begins with a Single Step | 1 | |
I/O and Its Effect on AS/400 Performance | 2 | |
The Path You Choose Might Be the Most Important Part of Your Journey | 7 | |
Logical Files Are a Valuable Tool, but Don't Overuse Them | 9 | |
Blocking Data to Make the Most of I/O Processing | 9 | |
Using SETOBJACC to Reduce I/O and Maximize Memory Usage | 11 | |
Too Much of a Good Thing Can Kill You | 16 | |
Reusing Deleted Records | 16 | |
The RGZPFM Command | 17 | |
The RGZPFFLTR Command | 19 | |
Performance and the Dynamic Program Call | 19 | |
ILE Performance Issues | 22 | |
Reducing the Size of Your Programs | 25 | |
Reducing Screen I/O in Your Interactive Programs | 26 | |
Service Programs Can Affect Performance | 27 | |
Do not Overlook the Obvious | 28 | |
The Blame Game | 29 | |
Performance, Performance, Performance | 29 | |
Chapter 2 | Subfiles Belong in Every Programmer's Toolbox | 31 |
The Basics | 32 | |
The Subfile Record Format (SFL) DDS | 33 | |
The Subfile Control Record Format (SFLCTL) DDS | 34 | |
Loading the Subfile | 38 | |
The Relationship Between Subfile Size (SFLSIZ) and Subfile Page (SFLPAG) | 39 | |
The Page Keys and Their Relationship to the Subfile | 40 | |
Controlling Which Page of the Subfile You see First | 41 | |
The Subfile End (SFLEND) Keyword | 43 | |
Coding the "Customer Subfile" Display File | 45 | |
Coding the "Customer Subfile" RPG Program | 48 | |
Coding the State Lookup Window Subfile Display File | 53 | |
Coding the State Lookup Window Subfile RPG Program | 54 | |
Error Handling with a Message Subfile | 57 | |
Using Search Fields in the Subfile Control Record Format | 60 | |
Hooray for Subfiles! | 68 | |
Chapter 3 | We Do Windows (and Menu Bars, Too)! | 69 |
How to Enhance Your Green Screens | 70 | |
Hardware and its Effect on Enhanced DDS Applications | 71 | |
My Screen Still Doesn't look Right | 72 | |
The Menu Bar | 72 | |
DDS Keywords for Coding the Menu Bar | 74 | |
Coding RPG for Menu Bars and Pull-Down Menus | 79 | |
Single-Choice, Pull-Down Menus | 81 | |
Radio Push Buttons | 82 | |
Multiple-Choice, Pull-Down Menus | 83 | |
Pull-Down Menu Shortcut Keys | 85 | |
Pull-Down Menu Accelerator Keys | 85 | |
Controlling the Attributes of Available/Unavailable Choices | 86 | |
Setting Pull-Down Menu Defaults | 87 | |
To Menu Bar or Not to Menu Bar | 87 | |
We do Windows | 87 | |
Who Needs Windows? | 88 | |
The Window Keyword | 89 | |
System Rules for Automatic Window Placement | 91 | |
Window Border Keyword | 91 | |
Window Title Keyword | 92 | |
Remove Window Keyword | 93 | |
User Restore Display Keyword | 93 | |
Windows and Response Time | 94 | |
The System Request Window Program | 94 | |
Scroll Bars and Subfiles | 99 | |
GUI This, and GUI That | 99 | |
Chapter 4 | Information Data Structures and Error Handling | 101 |
File Information Data Structure | 101 | |
Field Definitions | 104 | |
Program Status Data Structure | 116 | |
Implementing the *PSSR Subroutine | 121 | |
Information is Power | 127 | |
Chapter 5 | Tips and Techniques for the RPG/400 Programmer | 129 |
Removing Leading Blanks (Left Justify) | 131 | |
Translate (XLATE) Performs Single-Character Substitution within Character Strings | 131 | |
Using Biton/Bitoff Operation Codes | 132 | |
Using RTNDTA in File Maintenance | 133 | |
Processing Multiple Views of the Same Database File | 135 | |
Pass the Parameter, if You Please | 136 | |
Using a RTNCOD Parameter Between Programs | 137 | |
Using the Indicator Array | 138 | |
Using Indicators as Field Names | 139 | |
Retrieving the Program Name | 139 | |
Using Multiple Format Files | 140 | |
Localized Indicators | 141 | |
Display Attributes without Indicators | 142 | |
Using the Clear Op Code | 143 | |
Soft Coding Function Keys | 144 | |
Header Specification Compile Options | 146 | |
The Header Specification and Its Effect on Debug | 146 | |
Who Pulled the Trigger? | 147 | |
A Diverse Arsenal Is Your Best Defense | 150 | |
Chapter 6 | The Power of Command Processing APIs | 151 |
The What, the Why, and the How of Command Execute (QCMDEXC) | 152 | |
Running OPNQRYF to Sort a Database File from within an RPG Program | 153 | |
Overriding Printer Parameters from within an RPG Program | 155 | |
Submitting a Job to the Job Queue from within an RPG Program | 158 | |
QCMDEXC: An API for All Seasons | 162 | |
The Command Processing (QCAPCMD) API | 162 | |
C Function: System | 165 | |
Prototyping the Call to QCMDEXC | 167 | |
Command Performance | 167 | |
Chapter 7 | Array and String Handling | 169 |
What Is an Array? | 169 | |
What Would You Use an Array for? | 170 | |
Array Basics | 170 | |
The Runtime Array | 171 | |
Using Runtime Arrays to Store and Accumulate Totals | 173 | |
Sequencing Runtime Arrays for Output Operations | 175 | |
Using Runtime Arrays to Format Data for Output | 179 | |
The %ELEM Built-in Function Prevents Array Index Errors | 182 | |
Runtime Array Handling RPG Op Codes | 183 | |
The Compile-Time Array | 184 | |
Alternative Definition of Arrays | 187 | |
Arrays Can Be Very Dynamic | 189 | |
String Handling Isn't Just for People with Yo-Yos Anymore | 189 | |
Everybody Wants to Be a Cat | 193 | |
Check, Please | 197 | |
CHECKR Validates Character Strings from Right to Left | 198 | |
Using the %TRIM Built-in Function to Remove Leading and Trailing Blanks | 198 | |
Using the %TRIML Built-in Function to Remove Leading Blanks | 199 | |
Removing Trailing Blanks | 200 | |
Journey to the Center of the Earth | 201 | |
Seek and Ye Shall Find--with Scan | 202 | |
Substring (SUBST) Ties the Whole String-Handling Thing Together | 203 | |
Translate (XLATE) Performs Single-Character Substitution Within Character Strings | 205 | |
Final Words About Array and String Handling | 206 | |
Chapter 8 | Data Structures, Data Areas, and the Local Data Area | 207 |
The Data Structure | 208 | |
Data Areas | 220 | |
The Local Data Area | 226 | |
Using Externally Described Data Structures to Define Program-Described Data Files | 229 | |
Using Data Structures to Reduce Program Parameters | 231 | |
Multiple-Occurrence Data Structures and the Two-Dimensional Array | 232 | |
Your RPG Treasure Chest | 237 | |
Chapter 9 | System APIs | 239 |
What Is an API? | 240 | |
Retrieve APIs | 242 | |
Putting the Power of Retrieve APIs to Use | 242 | |
The Optional API Error Code Parameter | 244 | |
Using APIs to Retrieve Object Descriptions | 245 | |
Checking for Objects Using the Retrieve Object Description (QUSROBJD) API | 248 | |
Message APIs | 249 | |
User Spaces | 256 | |
List APIs | 259 | |
Display Access Path Command | 262 | |
Spool File APIs | 274 | |
Program APIs for ILE | 286 | |
Display Module Programs (DSPMODPGM) | 287 | |
Working with Service Programs | 289 | |
Encryption APIs | 291 | |
Don't Worry, Be API! | 296 | |
Chapter 10 | Tracking Down Problems | 297 |
Finding Debug in De Program | 297 | |
Debug 101 | 298 | |
Debug Header Specifications | 299 | |
In De Beginning | 300 | |
Adding De Breakpoint | 301 | |
De Conditional Breakpoint | 302 | |
Debugging Service Programs | 303 | |
Running De Program | 306 | |
Displaying De Variable | 306 | |
Using Debug to Decipher I/O Problems | 310 | |
De Small Print | 310 | |
Debugging Batch Jobs | 311 | |
Journaling as a Debug Tool | 314 | |
Job Logs and Problem Determination | 320 | |
Solutions Are Best Found by Those Who Know How to Look for Them | 326 | |
Chapter 11 | Tools for the Toolbox | 327 |
The Display Path (DSPPTH) Command | 328 | |
The Display Field (DSPFLD) Command | 339 | |
The Reorganize Physical File Filter (RGZPFFLTR) Command | 348 | |
The Find Displaced Logical File (FNDDSPLF) Command | 355 | |
The Work with Object Reference (WRKOBJREF) Command | 362 | |
The Service Program Usage (SERPGMUSAG) Command | 377 | |
The Module Usage (MODUSAG) Command | 384 | |
The Work with Fields (WRKFLD) Command | 391 | |
The Display File Description (DSPFILDSC) Command | 405 | |
Scan Joblog (SCNJOBLOG) Command | 415 | |
Find Source (FNDSRC) Command | 425 | |
Final Words about Tools in the Toolbox | 435 | |
Chapter 12 | Working with Date and Time Data Types | 437 |
The Date and Time Data Types | 437 | |
It's Elementary | 438 | |
What You See is Not Always What You Get! | 439 | |
Apples and Apples | 440 | |
Deciding on a Format | 440 | |
From Soup to Nuts | 441 | |
A Rose by Any Other Name | 443 | |
Readin, Ritin, and Rithmatic | 445 | |
What Is the Downside? | 445 | |
Date Arithmetic | 449 | |
Date Formatting | 451 | |
Using Data Types to Format Output | 455 | |
Date Conversion | 463 | |
Data Type Performance | 469 | |
The Dating Game | 472 | |
Chapter 13 | ILE Concepts | 473 |
Modules | 474 | |
Exports | 474 | |
Imports | 475 | |
Programs | 475 | |
Binding | 476 | |
Service Programs | 477 | |
Binder Language | 478 | |
The Commands | 478 | |
Servicing the Service Program | 480 | |
Cascading References | 481 | |
Tips for Good Service | 481 | |
Lip Service | 482 | |
Activition Groups | 482 | |
Scoping | 484 | |
ILE Be Good | 485 | |
Chapter 14 | ILE Procedures | 487 |
Subprocedures vs. Main Procedures | 488 | |
Parameter Keywords | 491 | |
Compiling | 502 | |
Binding Directory | 503 | |
Activation Group Considerations | 503 | |
Putting Header Specifications into Your Programs | 504 | |
The Subprocedure Addiction | 504 | |
Appendix | About the CD-ROM | 505 |
Transferring the Source | 509 | |
Compiling the Power Tools | 510 | |
Compiling the Rest of the Source | 510 | |
Index | 513 |
Login|Complaints|Blog|Games|Digital Media|Souls|Obituary|Contact Us|FAQ
CAN'T FIND WHAT YOU'RE LOOKING FOR? CLICK HERE!!! X
You must be logged in to add to WishlistX
This item is in your Wish ListX
This item is in your CollectionISeries and AS/400 RPG IV at Work
X
This Item is in Your InventoryISeries and AS/400 RPG IV at Work
X
You must be logged in to review the productsX
X
X
Add ISeries and AS/400 RPG IV at Work, , ISeries and AS/400 RPG IV at Work to the inventory that you are selling on WonderClubX
X
Add ISeries and AS/400 RPG IV at Work, , ISeries and AS/400 RPG IV at Work to your collection on WonderClub |