In 7.1, you have a new option that allows you to use the alias names in externally described data structures.
Right after my first child was born, I remember admiring him and trying to decide what his name should be. My husband and I had four names picked out, and we liked the combination of any two. We wanted to make sure that our son had the right name. After all, studies show that your name can affect your self-concept—how effective, attractive, and valued you feel. It also affects the way you behave, your personality, and others' impressions of you. So we knew that we had an important decision to make and took it seriously. Names are not only important for people, but for products and other things too. History has shown that products with bad names don't sell well. As programmers, we know that the names we give variables, procedures, tables, and other objects need to be descriptive and self-documenting. So it's nice that we are able to use long, descriptive names for our columns and records. What isn't so nice is that when we use a file with long, descriptive names as externally described files in RPG, we get stuck with the short and sometimes cryptic names as subfields.
Thankfully, in 7.1, there is a new keyword to tell the RPG compiler and SQL precompiler that we want to use the long or alias names when creating an externally described data structure. The new keyword is ALIAS, and it can be used on the F-spec and the D-spec.
The ALIAS keyword is allowed on the F-spec when the compiler does not generate input or output specs. This would be in cases where the TEMPLATE or QUALIFIED keyword is used, as well as for local files defined in subprocedures. The alias names will be used as the subfield names for data structures defined with the LIKEREC keyword for the files specified with the ALIAS keyword. If an alias name does not exist, the standard external name is used. The ALIAS keyword can be used on any externally described data structure in the D spec.
Example 1
My DDS specification for MYFILE looks like this:
A R MYREC
A EMPNM 30A ALIAS(EMPLOYEE_NAME)
A DEPT_ID 4A ALIAS(DEPARTMENT_NAME)
A BAND 1A
In the RPG source:
Fmyfile if e disk QUALIFIED ALIAS
The subfields of the LIKEREC data structure would be…
- EMPLOYEE_NAME
- DEPARTMENT_NAME
- BAND
When using this new feature, you need to remember that the rules for the PREFIX keyword are different for the alias names. If there is a second parameter on the PREFIX keyword, the subfields with an alias name will not have characters replaced, but just have the prefix added to the long name. Similarly, if the first parameter of the PREFIX keyword is double quotes ('') with a length specified in the second parameter, the subfields that do not have alias names will have characters removed. The subfields that have alias names will have no characters removed. If there is not a second parameter specified on the PREFIX keyword, the prefix is added to the alias name.
There are two other things to remember when using ALIAS. The EXTFLD keyword does not support continuation, and if you specify ALIAS, you need to be able to enter the entire alias name. The second is, if the alias name is enclosed in quotes, the standard external name is used, not the alias name.
Let's look at two more examples.
Example 2
My DDS specification for MYFILE2 looks like this:
A R MYREC2
A XYZPRODNM 40A ALIAS(PRODUCT_NAME)
A XYZSKU 8A
In RPG source:
Fmyfile2 if e disk ALIAS QUALIFIED PREFIX(NEW_)
The subfields of the LIKEREC data structure would be…
- NEW_PRODUCT_NAME
- NEW_XYZSKU
Fmyfile2 if e disk ALIAS QUALIFIED PREFIX(AAA_:3)
The subfields of the LIKEREC data structure would be…
- AAA_PRODUCT_NAME
- AAA_SKU
Fmyfile2 if e disk ALIAS QUALIFIED PREFIX('':3)
The subfields of the LIKEREC data structure would be…
- PRODUCT_NAME
- SKU
Example 3
I have a table that is defined like this:
CREATE TABLE MYTAB(
LONG_COLUMN_NAME_THAT_WOULD_BE_AN_ALIAS_NAME INT,
SECOND_LONG_COLUMN_NAME_THAT_IS_LONGER_THAN_THE_FIRST
INT, "col %$¢&%# 23" int)
In RPG source:
D DS1 E DS EXTNAME(MYTAB) QUALIFIED ALIAS
D PREFIX('A_')
The subfields of DS1 would be…
- A_LONG_COLUMN_NAME_THAT_WOULD_BE_AN_ALIAS_NAME
- A_SECOND_LONG_COLUMN_NAME_THAT_IS_LONGER_THAN_THE_FIRST
- A_COL__00001
As you can see, the ALIAS keyword allows you to utilize the long and descriptive names. Now it is up to you to name wisely.
as/400, os/400, iseries, system i, i5/os, ibm i, power systems, 6.1, 7.1, V7,
LATEST COMMENTS
MC Press Online