How do I zero fill an incoming part number field?

Technote (FAQ)


Question

How do I zero fill an incoming part number field, specifically alphanumeric? The field coming in may be from 6 to 12 positions long, and I'm trying to pad the number with zeros on the left to pad it out to 12 positions. There are 6 or 7 significant digits on the actual number.

Answer

There is a way to zero fill the incoming part number field with leading zeros for 6 to 12 position part number field.

By using the scalar, assign a different variable to each position of the incoming part number field.
&LSET S1 &E(SPART SC 1.1)
&LSET S2 &E(SPART SC 2.1)
&LSET S3 &E(SPART SC 3.1), etc.

If the position didn't exist, the variable is not created.
A 6-position field means that variables for 7-12 are not created.
A 7-position field means that variables for 8-12 are not created.

Then by adding another check, see if the variable exists. Determine the length of the incoming field and add on the appropriate leading zeros to the alphanumeric part number.

&IF(S12 GE '0') &IFNOVAR &LSET OPART &E(CHAR(SPART))
&IF(S11 GE '0') &IFNOVAR &LSET OPART &E(CHAR(Z1)+CHAR(SPART)), etc.
&IF(S6 GE '0') &IFNOVAR &LSET OPART &E(CHAR(Z6)+CHAR(SPART))

If the variable doesn't exist, then the line is ignored, and marked N/A.
The OPART variable is created the first time a valid check is hit.

No compares are actually done between the alpha and numeric positions - at least while there are no alphas in the last position of the part numbers.

Another technique, suggested by one in the user community as a more straightforward approach, is:

&SAVE VPARTNM
&SET VPARTNM &E('0000000' + CHAR(VPARTNM))
&SET VPARTNM &E(CHAR(VPARTNM) TU 12)
&E(VPARTNM)


Rate this page:

(0 users)Average rating

Document information


More support for:

WebSphere Data Interchange
WDI 3.2 MP

Software version:

3.2, 3.3

Operating system(s):

AIX, Windows, z/OS

Reference #:

1378486

Modified date:

2013-03-27

Translate my page

Machine Translation

Content navigation