`CLCMOD11        CALCULATE MODULUS 11                   TAACLRA`
```
The Calculate  Modulus 11 command  calculates the  value for a  Modulus
11 Self-Check  Digit.  The  command returns a value  for the self-check
digit  which is  intended to be  added to a  number such  as a customer
number.  DDS supports the  CHECK(M11) keyword for a field to  assist in
ensuring  the number  is keyed  correctly.   Some  input values  cannot
produce  a Modulus 11  self-check digit  and an escape  message will be
sent.

Self-check digits  are  commonly  used  when entering  values  such  as
customer   numbers  to   minimize   errors  caused   by  miskeying   or
transposing digits.

The  CLCMOD11 command creates  the self-check  digit.  For  example, if
your customer  number is  5 digits  without the  self-check digit,  the
following  CL program  using CLCMOD11  would  calculate the  self-check
digit and return a 6 digit customer number.

PGM        PARM(&CUST5 &CUST6)
DCL        &CUST5 *CHAR LEN(5)
DCL        &CUST6 *CHAR LEN(6)
DCL        &DIGIT *CHAR LEN(1)
CLCMOD11   INPUT(&CUST5) MOD11DGT(&DIGIT)
MONMSG     MSGID(TAA9893) EXEC(DO) /* Invalid input */
/*                                       */
/*    Your handling of invalid input     */
/*                                       */
ENDDO      /* Invalid input value */
CHGVAR     &CUST6 (&CUST5 *CAT &DIGIT)
ENDPGM

The 6 digit number becomes the customer number.

See  the DDS manual  for a  discussion of  how the self-check  digit is
calculated.

Note  that some values will not  generate a valid Modulus 11 self-check
digit.  There is no solution other than to use a different value.

Checking the value without using DDS
------------------------------------

You can use CLCMOD11  to check a value also.   Just strip off  and save
off  the  digit position,  use  CLCMOD11  to  calculate the  self-check
digit, and them compare the calculated digit to the saved version.

CLCMOD11 escape messages you can monitor for
--------------------------------------------

TAA9891    The input value cannot be all blanks.
TAA9892    The input value must only contain digits.
TAA9893    A Modulus 11 self-check digit cannot be calculated.

Escape messages from based on functions will be re-sent.

Command parameters                                    *CMD
------------------

INPUT         The  input value  without the  self-check digit.   The
value cannot be all blanks  and must have only  digits
and  trailing  blanks.    Up   to  31  digits  may  be
entered.

Some  input  values will  not  generate  a Modulus  11
self-check  digit.    If  such  a  value  is  entered,
TAA9893 is sent as an escape message.

MOD11DGT      The self-check  digit to  be returned.   The  variable
must be declared as *CHAR LEN(1).

Restrictions
------------

Because the  command returns a  variable, it may  only be used  in a CL
program.

Prerequisites
-------------

The following TAA Tools must be on your system:

EDTVAR          Edit variable
SNDESCMSG       Send escape message

Implementation
--------------

None, the tool is ready to use.

Objects used by the tool
------------------------

Object        Type    Attribute      Src member    Src file
------        ----    ---------      ----------    ----------

CLCMOD11      *CMD                   TAACLRA       QATTCMD
TAACLRAC      *PGM       CLP         TAACLRAC      QATTCL
```

Added to TAA Productivity tools January 15, 2002