Program to calculate modified mod 10 check digit

This program can calculate modified mod 10 check digit as per UPS label requirements.

This program is stand-alone and can be incorporated in any program when you need to calculate modified mod 10 check digit as per UPS label requirements.
REPORT Z_mod_check_digit.

*This program will calculate the modified mod 10 check digit as per
*UPS label requirements.
PARAMETERS: S_NUMBER(17)  TYPE C DEFAULT '1Z123X56031234820'.

  DATA: WUPS_STR(15) TYPE C,
        SUM_ODD      TYPE I,
        SUM_EVEN     TYPE I,
        SUM_TOTAL    TYPE I,
        STEP         TYPE I,
        W_CHAR(1)    TYPE C,
        W_VAL(1)     TYPE C,
        W_TEMP(1)    TYPE C,
        MODX(2)      TYPE C,
        MOD10(1)     TYPE C.
  CLEAR: SUM_ODD, SUM_EVEN, SUM_TOTAL.
  WUPS_STR = S_NUMBER+2(15).
  STEP = 0.
  WHILE STEP < 15.
    W_CHAR = WUPS_STR+STEP(1).
    PERFORM GET_VALUE USING W_CHAR W_VAL.
    W_TEMP = STEP MOD 2.
    IF ( W_TEMP = 0 ).
      SUM_ODD = SUM_ODD + W_VAL.
    ELSE.
      SUM_EVEN = SUM_EVEN + W_VAL.
    ENDIF.
    STEP = STEP + 1 .
  ENDWHILE.
  SUM_TOTAL = SUM_ODD + 2 * SUM_EVEN.
  MODX = 10 - ( SUM_TOTAL MOD 10 ).
  IF MODX = 10.
    MOD10 = MODX+1(1).
  ELSE.
    MOD10 = MODX+0(1).
  ENDIF.
  SKIP 2.
  WRITE:/20 'The check digit is:  ', MOD10.
  SKIP 1.
*---------------------------------------------------------------------*
*       FORM GET_VALUE                                                *
*---------------------------------------------------------------------*
*      Convert alpha numeric to numeric as per UPS Barcode specs      *
*---------------------------------------------------------------------*
FORM GET_VALUE USING W_CHAR W_VAL.
  CASE W_CHAR.
    WHEN '0' OR 'I' OR 'S'.
      W_VAL = 0.
    WHEN '1' OR 'J' OR 'T'.
      W_VAL = 1.
    WHEN '2' OR 'A' OR 'K' OR 'U'.
      W_VAL = 2.
    WHEN '3' OR 'B' OR 'L' OR 'V'.
      W_VAL = 3.
    WHEN '4' OR 'C' OR 'M' OR 'W'.
      W_VAL = 4.
    WHEN '5' OR 'D' OR 'N' OR 'X'.
      W_VAL = 5.
    WHEN '6' OR 'E' OR 'O' OR 'Y'.
      W_VAL = 6.
    WHEN '7' OR 'F' OR 'P' OR 'Z'.
      W_VAL = 7.
    WHEN '8' OR 'G' OR 'Q'.
      W_VAL = 8.
    WHEN '9' OR 'H' OR 'R'.
      W_VAL = 9.
    WHEN OTHERS.
  ENDCASE.
ENDFORM.                   " get_value
This was last published in March 2002

Dig Deeper on SAP trends, strategy and ERP market share

PRO+

Content

Find more PRO+ content and other member only offers, here.

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchManufacturingERP

SearchOracle

SearchDataManagement

SearchAWS

SearchBusinessAnalytics

SearchCRM

SearchContentManagement

SearchFinancialApplications

Close