Abstract:
The present invention is a system and method for generating a barcode with a human readable interpretation (HRI). The method involves receiving characters as an input data set that comprises a series of unique data sets each comprising a unique application identifier. For each adjacent pair of data sets, a special character is inserted between the two data sets of the pair. The method further includes generating a barcode encoding data set for encoding the barcode based on the input data set, including interpreting the special character as a separator between data sets; generating a data set for the HRI based on the input data set, including converting the special character to a “_” (space); and generating the barcode with the HRI including combining the barcode encoding data set and the data set for the HRI.

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
       [0001]    This application is a continuation of, and claims priority under 35 U.S.C. §120 on, U.S. application Ser. No. 11/550,325, filed on Oct. 17, 2006, the content of which is incorporated by reference herein in its entirety. Japanese patent application No. 2005-302792, is also incorporated by reference herein in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to a method and an apparatus for generating a barcode with an application identifier and a human readable interpretation. 
         [0004]    2. Description of the Related Art 
         [0005]    Barcodes are widely used in product management and distribution control, and many software applications for generating and printing barcodes are available. See, for example, Japanese Unexamined Patent Application Publication H11-221946. 
         [0006]    Using the JAN code as an example, when the user enters the text to be converted to a barcode, the application converts the text, which is the human readable interpretation (HRI) of the barcode, to the barcode symbols. The human readable interpretation can be selectively printed as human-readable text below the barcode symbol as required. A barcode with a HRI can therefore be generated by simply inputting the text that is printed on the HRI line. 
         [0007]    As such barcodes have become increasingly common in the distribution industry with the development of POS (point-of-sale) systems, EOS (electronic ordering systems), EDI (electronic data interchange) and other types of distribution data management systems, the UCC/EAN-128 barcode standard (now known as GS1-128) has grown in use due to demand for more sophisticated product management and distribution control systems. 
         [0008]    Unlike JAN barcodes, however, UCC/EAN-128 barcodes with an HRI line cannot necessarily be correctly produced by simply inputting the HRI text for the following reasons. 
         [0009]    (1) Because UCC/EAN-128 barcodes are used in the distribution industry, an application identifier is used to identify various types of distribution and product management information. The barcode is generated from a data set combining an application identifier with a following data unit. 
         [0010]    (2) The HRI line printed below the barcode symbol must also include the application identifier in a human readable form. 
         [0011]    A problem with barcodes that use an application identifier when an HRI line is added is the HRI text must be input separately from the data used to generate the barcode symbol. Thus, more time is required for data input. 
         [0012]    Other issues with UCC/EAN-128 barcodes include the following. 
         [0013]    (3) Multiple data sets can be connected together using special characters (called function code characters). 
         [0014]    (4) A check digit (modulus  10 ) must be calculated in many cases. 
         [0015]    As a result of these issues, inputting the HRI text separately from the data to be encoded in the barcode takes even longer. 
       SUMMARY OF THE INVENTION 
       [0016]    The present invention pertains to a method and an apparatus (or system) for generating a barcode with a human readable interpretation (HRI) to be input quickly and easily. 
         [0017]    A method according to an aspect of the present invention generates a barcode with an HRI. The method includes receiving characters as an input data set that comprises a series of unique data sets each comprising a unique application identifier and a unique data portion. Each data set further includes a first special character immediately before its application identifier and a second special character immediately after its application identifier. Each individual character in the input data set has a one to one correspondence with an individual symbol in the HRI. The method further includes generating a barcode encoding data set for encoding the barcode based on the input data set, generating a data set for the HRI based on the input data set, generating the barcode with the HRI, including combining the barcode encoding data set and the data set for the HRI. 
         [0018]    In an embodiment of the invention, the first special character is ignored when generating a barcode encoding data set, and the second generating step includes converting the first special character to a first symbol, which may be “(”. In this embodiment, the second special character may be converted to a second symbol, which may be a “)”. 
         [0019]    With this arrangement, the data to be encoded in the barcode symbol and the data to be printed in the HRI line with the barcode symbol can both be entered with a single data input operation. Furthermore, by bracketing the application identifier with parentheses (“(” and “)”) as data for the HRI characters, the application identifier can be easily recognized in the HRI line. More specifically, when generating a barcode with an HRI according to a specification that requires including the application identifier recognizably in the HRI, the barcode data and the data for the HRI do not need to be entered in separate steps, and data input is therefore faster and easier. 
         [0020]    In an alternative embodiment, the second special character is converted to a “_” (space) to generate data for the HRI. In this case, the second special character is essentially interpreted as a field separator between the application identifier and a data portion following the application identifier. By inserting a space “_” immediately after the application identifier as data for the HRI characters, the application identifier can be easily recognized in the HRI line. Thus, when generating a barcode with an HRI according to a specification that requires including the application identifier recognizably in the HRI, the barcode data and the data for the HRI do not need to be entered in separate steps, and data input is therefore faster and easier. 
         [0021]    In an embodiment of the invention, a third special character, which may be “*”, is inserted at a check digit input position, and in the first generating step the third special character is replaced with the calculated check digit value. Moreover, in the second generating step the third special character is replaced with the calculated check digit value. This embodiment of the invention enables generating a barcode with a human readable interpretation from a single data entry even when a check digit is included in the barcode symbol. The user can also freely specify where the check digit is inserted. 
         [0022]    In an embodiment of the invention, generating the barcode encoding data uses only numeric characters in the input data set. 
         [0023]    In an embodiment of the invention, the application identifier includes non-numeric data. In this embodiment, the first generating step ignores the non-numeric data in the application identifier, but the second generating step does not. 
         [0024]    In an embodiment of the invention, the input data set includes non-encoding characters which are not special characters and are not supported by the encoding scheme used to generate the barcode. In this embodiment, the first generating step ignores the non-encoding characters, but the second generating step uses such characters. 
         [0025]    In an embodiment of the invention, the barcode may be a UCC/EAN-128 barcode. The invention can thus be used with UCC/EAN-128 barcodes, which are widely used in the distribution industry. 
         [0026]    Another aspect of the invention is directed to an apparatus having functional components for generating a barcode with a human readable interpretation as described above. In some embodiments, the apparatus comprises a printer for printing the generated barcode with a human readable interpretation. These embodiments can provide a barcode using an application identifier with a human readable interpretation to a printer for printing based on a single data input. 
         [0027]    In yet another aspect, the invention provides a data recording medium that includes a computer-executable program for performing the method for generating a barcode with a human readable interpretation as described above. In addition to possessing the benefits flowing from the method itself, this aspect of the invention provides a convenient vehicle in which to embody the method steps. 
         [0028]    Another embodiment of a method of generating a barcode with a human readable interpretation, comprises the steps of receiving characters as an input data set that comprises a series of unique data sets each comprising a unique application identifier, wherein, for each adjacent pair of data sets, a special character is inserted between the two data sets of the pair; generating a barcode encoding data set for encoding the barcode based on the input data set, including interpreting the special character as a separator between data sets; generating a data set for the human readable interpretation based on the input data set, including converting the special character to a “_” (space); and generating the barcode with the human readable interpretation, including combining the barcode encoding data set and the data set for the human readable interpretation. 
         [0029]    Other objects and attainments together with a fuller understanding of the invention will become apparent and appreciated by referring to the following description and claims taken in conjunction with the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0030]      FIG. 1  is a block diagram of a printing system according to a preferred embodiment of the invention. 
           [0031]      FIG. 2  shows an example of a UCC/EAN-128 barcode. 
           [0032]      FIG. 3  describes the data format of a UCC/EAN128 barcode. 
           [0033]      FIG. 4  describes examples of special characters. 
           [0034]      FIG. 5  describes the process of generating barcode data and HRI character data from the input data 
       
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0035]    A preferred embodiment of the present invention is described below with reference to the accompanying figures. 
         [0036]    A method and an apparatus for generating a barcode with a human readable interpretation, a printing apparatus and a program according to the present invention are described below. 
         [0037]    The invention enables generating a barcode that uses an application identifier and is printed with a human readable interpretation (HRI) based on a single data input operation, thus eliminating the need to input the data to be encoded in the barcode symbol separately from the data to be included in the HRI line. 
         [0038]    The method of generating a barcode with an HRI line and other aspects of the invention are described below using by way of example a printing system including a host computer and a printer for printing based on data received from the host computer. 
         [0039]    A UCC/EAN-128 barcode is also used by way of example as a barcode that uses an application identifier. 
         [0040]      FIG. 1  is a block diagram of a printing system  10  according to a preferred embodiment of the invention. The printing system  10  includes a host computer  20  such as a personal computer connected over a wireless or wired LAN, for example, to a printer  40  that can print barcodes. Alternatively printing system  10  may incorporate the essential features of the host computer  20  and the printer  40  into a single integrated device. 
         [0041]    The host computer  20  may include an application  21 , an operating system  22  that is the basic program controlling the host computer  20 , and a printer driver  23  for controlling printing on the printer  40 . The application  21  is a program for generating data (such as text data, graphic data or tabular data) including a UCC/EAN-128 barcode B. 
         [0042]    As shown in  FIG. 2 , a UCC/EAN-128 barcode B includes a barcode symbol B 1  representing the encoded data, and an HRI line B 2  (human readable interpretation) located below the barcode symbol B 1 . To print a document containing this UCC/EAN-128 barcode B, the user starts the application  21  and uses a keyboard or other input device to input the data to be printed on the HRI line B 2  (the “input data” in  FIGS. 5A-C ). 
         [0043]    The application  21  gets the data for the HRI line B 2  as the barcode data for printing the UCC/EAN-128 barcode B. The application  21  generates document data containing the barcode data based on other input from the user, and outputs the document data through the operating system  22  to the printer driver  23 . Whether the application  21  adds the HRI line B 2  to the barcode symbol B 1  is selectable, and data related to this selection is output together with the barcode data. Note that the following description assumes that the user selected to add the HRI line B 2 . 
         [0044]    The printer driver  23  then converts the document data generated by the application  21  to a command format that can be interpreted by the printer  40 , and outputs the converted data with the barcode data to the printer  40 . In this embodiment of the invention the printer driver  23  outputs the barcode data directly to the printer  40  without further processing (that is, directly outputs the data corresponding to the “input data” in  FIGS. 5A-C ). 
         [0045]    The printer  40  has an input unit  41  for receiving the input data output by the host computer  20 , a first generating unit  42 , a second generating unit  43 , a merging unit  44 , and a printing unit  45 . Alternatively the first generating unit  42 , the second generating unit  43  and the merging unit  44  may be implemented as software on the host computer  20 , or in an entity separate from the host computer  20  and the printer  40 . 
         [0046]    The first generating unit  42  generates the data encoded in the barcode symbol B 1  based on the barcode data contained in the input data, and the second generating unit  43  similarly generates the data for printing the HRI line B 2  (the “HRI character data” below) based on the barcode data. 
         [0047]    The merging unit  44  merges the encoding data and HRI character data generated by the first generating unit  42  and the second generating unit  43  to generate a barcode with an HRI line B as shown in  FIG. 2 . 
         [0048]    The printing unit  45  then prints the barcode with an HRI line B generated by the merging unit  44  and other data received by the input unit  41 . Data other than the barcode data received by the input unit  41  is thus not processed by the first generating unit  42 , the second generating unit  43  and the merging unit  44 . 
         [0049]    When the input unit  41  gets the data string “(02)1234567” as the barcode data as shown in example a- 1  in  FIG. 5A , for example, the input unit  41  outputs the input data to the first generating unit  42  and the second generating unit  43 . 
         [0050]    The first generating unit  42  strips special characters, the opening parenthesis “(” (special character 1) and the closing parenthesis “)” (special character 2) in this example, from the input string “(02)1234567” to generate the data string “021234567” encoded in the barcode symbol B 1 . As described in further detail below, the first generating unit  42  may strip all non-numeric characters as well as these special characters from the encoded data string (that is, it may encode only numeric characters). Alternatively only the application identifier or the data portion of the data set may be limited to numeric characters. Characters in the input data not supported by the symbology (such as, but not limited to UCC/EAN-128) may be ignored by first generating unit  42  yet still processed by second generating  43 . 
         [0051]    The second generating unit  43  converts the special characters “(” and “)” contained in the input data string “(02)1234567” to the same characters “(” and “)” in human readable form and outputs the resulting HRI line data “(02)1234567”. The first generating unit  42  and second generating unit  43  can operate in parallel or sequentially. 
         [0052]    The merging unit  44  then combines the barcode data “021234567” with the HRI character data “(02)1234567” to generate print data for printing a barcode with an HRI line B. 
         [0053]    The printer  40  can thus generate both the encoded data 021234567 and the corresponding HRI character data (02)1234567 based on the single data entry (input data) (02)1234567, and the user is therefore saved the time and trouble of separately inputting the data to be barcoded and the HRI character data. 
         [0054]    The process whereby the first generating unit  42  and the second generating unit  43  generate the barcode symbol and HRI character data based on input data from the input unit  41  is described in further detail below. 
         [0055]    The data format of a UCC/EAN-128 barcode B (barcode symbol B 1 ) is described first with reference to  FIG. 3 .  FIG. 3A  shows the basic structure of a UCC/EAN-128 barcode B and  FIG. 3B  shows the structure of a barcode containing more than one data set. 
         [0056]    The UCC/EAN-128 barcode B is an application standard based on the Code 128 specification, and differs from normal Code 128 symbology in the addition of a function code character FNC 1 , (i.e. “{1”) after the start character (start code). In addition, the application identifier (“AI” in  FIGS. 3A-B ), following the function code, and the data portion, following the application identifier, together render a single “data set”. The check digit A, following the data set, is calculated by taking the modulus  10  of the data portion of the data set. A check digit B may be calculated by taking the modulus  103  of the sum of the start code value plus the product of each character position and the character value of the character at that position. The check digit B and a stop character (stop code) are added to the end of the basic barcode symbol. 
         [0057]    Of these elements, the start character, FNC 1 , check digit B, and stop character are automatically added to the encoded data by the first generating unit  42  or the merging unit  44  (see  FIG. 1 ), and the user does not need to enter any data corresponding to these elements. More specifically, the user only needs to enter data corresponding to the application identifier, the data set and the check digit A as the input data ((d 1  . . . dn), see  FIGS. 5A-C ). 
         [0058]    The application identifier is used together with the data portion of the data set, and is used for identifying the content of the data portion. The application identifier is typically a code of two to four digits, and within the context of a UCC/EAN-128 barcode B specifically defines a packaging identifier for a container or a carton number, a product identifier, a quantity, a weight unit identifier a weight, a volume, a shipping management identifier or a serial number, for example. The application identifier is also not limited to data items, but can also define data attributes (such as numeric, alphabetic, or alphanumeric), number of digits and the data sequence, so that the information can be read accurately by anyone regardless of industry. 
         [0059]    In the example shown in  FIG. 2 , the application identifiers are the numbers contained in parentheses in the HRI line B 2 . The first application identifier ( 01 ) means that the fourteen digits in the following data block contain a Global Trade Item Number (GTIN). The second application identifier ( 17 ) means that the following six digits represent a product or drug expiration date or a recommended warranty period such as a “use by” date in the YYMMDD format. The application identifier ( 30 ) denotes a quantity or volume value contained in a variable number of digits, and the application identifier ( 10 ) denotes a lot number, batch number, process number or other value in a variable length alphanumeric code. 
         [0060]    As shown in the UCC/EAN-128 barcode B in  FIG. 2 , a single UCC/EAN-128 barcode B can contain multiple data sets each containing an application identifier and data.  FIG. 3B  shows the structure of a barcode containing multiple data sets (d 1  to dn) when two data sets (data set  1 , data set  2 , and special characters indicating insertion of a check digit in each data set) is the input data. 
         [0061]    As shown in  FIG. 3B , when two or more data sets are combined in a single barcode symbol, a non-data character known as a function  1  character or FNC 1  character (special character 5) is inserted as a field separator in the data. The FNC 1  character is needed to separate the data sets during decoding because the data blocks are not necessarily a fixed length. If the data blocks are fixed length, the FNC 1  character can be omitted. An embodiment of the present invention may add the FNC 1  character whether or not the data block is a fixed length block. Note that the FNC 1  character does not need to be inserted after the last data set. 
         [0062]    Special characters and how they are handled are described next with reference to  FIGS. 4A-B .  FIG. 4A  shows the special characters that are not encoded in the barcode symbol, and  FIG. 4B  shows special characters that are encoded in the barcode symbol. 
         [0063]    As shown in  FIG. 4A , the first generating unit  42  does not process (that is, it ignores) the opening parenthesis “(” (special character 1) representing the decimal ASCII code  10  (28 in hexadecimal) while the generating unit  43  converts the same character to a human-readable parenthesis “(” included in the HRI character data. 
         [0064]    If a closing parenthesis “)” (special character 2) representing the decimal ASCII code  41  (29 in hexadecimal) is used at the beginning of the input data, the generating unit  42  may process the closing parenthesis as a divider between the application identifier and the data portion while the second generating unit  43  may convert the special character 2 to a human-readable “)” to generate the HRI character data. The first generating unit  42  may ignore the second and subsequent closing parenthesis “)” in the input data while the second generating unit  43  converts each closing parenthesis to a human readable character “)”. 
         [0065]    If a space (ASCII code  32  (20 hexadecimal); special character 3) is used at the beginning of the input data, the first generating unit  42  may assume the space denotes an application identifier while the second generating unit  43  may insert a space in the HRI line B 2 . The first generating unit  42  may ignore the second and subsequent spaces in the input data, while the second generating unit  43  may convert each space to an underscore character “_”. 
         [0066]    The first generating unit  42  may convert an asterisk “*” (ASCII code  42  (2A hexadecimal); special character 4) to the check digit A calculated using modulus  10  for the data portion of the data set. The second generating unit  43  may also convert an asterisk “*” to the value of the check digit A. 
         [0067]    As shown in  FIG. 4B , the FNC 1  character (special character 5) expressed as ASCII codes  123  and  49  (7B and 31 in hexadecimal and the text symbols “{1”) is used by the first generating unit  42  to extract a data portion and check digit from the preceding space or closing parenthesis “)” to the FNC 1  character. The FNC 1  character may be converted to a space by the second generating unit  43 . 
         [0068]    The application identifier and data portion of each data set are processed as follows using the defined special characters. 
         [0069]    (1) The first generating unit  42  handles from the first data (d 1 ) or FNC 1  character to the next space or the FNC 1  character and the opening parenthesis to the closing parenthesis as the application identifier, and from the space or closing parenthesis to the last data (dn), asterisk, or FNC 1  character as the data portion of the data set. 
         [0070]    (2) The first generating unit  42  encodes only numbers as the application identifier, and ignores all non-numeric data. 
         [0071]    (3) The second generating unit  43  includes both numeric and non-numeric parts of the application identifier in the HRI line B 2 . 
         [0072]    Some examples of generating the encoded barcode data and HRI character data based on the input data are described next with reference to  FIGS. 5A-C . Note that in  FIGS. 5A-C  an underscore character “_” denotes a space, “{1” denotes the FNC 1  character and shaded characters denote the check digit A value. 
         [0073]    As shown in example a- 1  in  FIG. 5A , when the input data is “(02)1234567”, the special character “(” is ignored, the special character “)” is interpreted as separating the application identifier and the data portion, and “021234567” is output as the encoded barcode data. 
         [0074]    The special character “(” and the special character “)” are converted to a human readable “(” and “)”, respectively, to generate the HRI character data. 
         [0075]    It should be noted that the special characters and the corresponding characters converted to human readable form in the HRI character data are the same in this example, but are not necessarily the same. For example, the inequality signs “&lt;” and “&gt;” could be used as the special characters and converted to parentheses “(” and “)” in the HRI character data. 
         [0076]    If the input data is 02 — 1234567 as shown in input example a- 2 , the special character “_” is interpreted as separating the application identifier and data portion, and “021234567” is output as the encoded barcode data. 
         [0077]    The special character “_” is converted to a human readable “_” to generate the HRI character data. As noted above the special character “_” in the context of  FIGS. 5A-C  denotes a space. 
         [0078]    It should be noted, in example a- 2 , the special character and the corresponding character converted to human readable form in the HRI character data are the same, but is not necessarily the same. 
         [0079]    If the input data is (02)1234567* as shown in input example b- 1 , the special character “*” is converted to the value of the check digit (6) calculated for the data portion “1234567” and added to the end of the data to output the encoded barcode value 0212345676. 
         [0080]    The special character “(” and the special character “)” are converted to a human readable “(” and “)”, respectively, to generate the HRI character data. 
         [0081]    The special character “*” is also converted to the value of the check digit (6) to generate the HRI character data “(02)12345676”. 
         [0082]    If the input data is (02)123*{1(004)125* as shown in input example b- 2 , from the closing parenthesis “)” to the special character “{1” is interpreted as the data portion and the check digit “0” is calculated. In addition, from the next “)” to the end is interpreted as a data portion and the check digit “4” is calculated. The resulting encoded barcode data is therefore “021230{10041254”. 
         [0083]    The special character “{1” is also converted to a space character “_” to output the HRI character data “(02)1230_(004)1254”. 
         [0084]    As a result, if the special character “{1” is included in the input data, the special character “{1” is interpreted as a connector between plural data sets, specifically “(02)1230” and “(004)1254” in this example. 
         [0085]    In input example b- 3 , the special characters “(” and “)” surrounding the application identifiers in example b- 2  are simply replaced by the special character “_” and the barcode encoded data is the same. The HRI character data is “02 — 1230 — 004 — 1254”. 
         [0086]    If non-numeric characters are included in the application identifier in the input data “($02$)1234567” as shown in example c- 1  in  FIG. 5C , the two dollar signs “$” in this example are ignored by the first generating unit  42  because only numeric data is encoded, and the encoded barcode data therefore represents “021234567”. The HRI character data is “($02$)1234567”, however, because all characters surrounded by the parentheses “(” and “)” are also included in the HRI character data. 
         [0087]    In input example c- 2 , the special characters “(” and “)” surrounding the application identifiers in example c- 1  are simply replaced by the special space character “_” and the encoded barcode data is therefore the same. However, because the special space character “_” is converted to a human readable space, the HRI character data is “$02$ — 1234567”. 
         [0088]    The invention thus enables generating both the data to be encoded in the barcode symbol and the corresponding HRI character data by simply inputting the data with the application identifier enclosed between two predetermined special characters or with a predetermined special character inserted immediately after the application identifier. Furthermore, by enclosing the application identifier in parentheses “(” and “)” or inserting a space immediately after the application identifier in the HRI character data, the user can also easily recognize the application identifier in the HRI line. 
         [0089]    Therefore it becomes unnecessary to input data encoded in the barcode symbol separately from information contained in the HRI character data when generating a barcode B with an HRI line B 2  according to a specification that requires including the application identifier in human readable form in the HRI line B 2 . Data can thus be entered quicker and easier. 
         [0090]    Furthermore, because the first generating unit  42  encodes only the numeric part of the data (text) input by the input unit  41 , the user can specify any desired characters (including symbols and letters) for inclusion in the HRI line B 2 . 
         [0091]    Yet further, because the first generating unit  42  and second generating unit  43  convert a predetermined special character (such as an asterisk “*”) to the check digit value, the present invention can also be used with barcodes having a check digit. The user can also freely specify where the check digit is inserted. 
         [0092]    Furthermore, because the first generating unit  42  recognizes a predetermined special character (such as the FNC 1  character) as the field separator between data sets, the invention can also be used with barcodes that contain a plurality of data sets each having an application identifier and data portion. The user can also easily recognize the data sets in the HRI line B 2  because this special character is converted to a space “_”. 
         [0093]    The first generating unit  42 , second generating unit  43  and merging unit  44  may be included in the printer  40  in an embodiment of the invention, or could be part of the host computer  20 . In this case the application  21  can be rendered to function as these three units, or the printer driver  23  can function as these units. 
         [0094]    The means (functions) of the printer  40  described above can also be rendered as a computer-executable program. This program can be distributed or stored on a data recording medium (not shown in the figures). The data recording medium may be a CD-ROM, a flash ROM, a memory card (such as a CompactFlash (R)a Smart Media card, or a memory stick), a Compact Disc, a magneto-optical disk, a DVD disc, a floppy disk or a hard disk drive, for example. 
         [0095]    The invention is also not limited to a printing system  10  as described above. For example, the invention can be applied to a stand-alone printer that both generates the print data and prints, and the hardware configuration and processing arrangement can be varied in many other ways without departing from the scope of the invention. The invention is also not limited to use with UCC/EAN-128 barcodes, and can be applied to any barcode that uses an application identifier.