.IDENT

Include a module identifier string

WTSupported in traditional Synergy on Windows
WNSupported in Synergy .NET on Windows
USupported on UNIX
VSupported on OpenVMS
.IDENT string

Arguments

string

The module identifier string to be included. This must be an alpha expression.

Discussion

The .IDENT compilation control directive defines a module identifier string to be included in an object record of a routine’s object module. Only the first 15 characters specified in string are used.

Only the first .IDENT encountered before or within a routine is used. Additional .IDENT directives within a given routine will generate a warning.

If you specify the .IDENT directive in a file that contains more than one routine, all routines following the routine with the .IDENT directive use the same module identifier string.

The Synergy librarian displays the .IDENT string when the contents of a library are listed.

You must specify the .IDENT compiler directive for a routine before the compiler emits the object module header. If the compiler encounters an .IDENT compiler directive after it has already written the object module header, it generates an “.IDENT ignored” error (IDIGN). (This may happen if you specify .IDENT at the end of a large routine.)

On UNIX, an .IDENT string is called a “what” string. If you include an .IDENT string in your object file, you can enter:

what file.dbo

at your UNIX prompt to get the .IDENT information. “What” strings are available on UNIX systems that have Source Code Control System (SCCS). For more information about “what” strings, refer to your UNIX manual.

On OpenVMS, .IDENT strings are called “module version” strings. If you include an .IDENT string in your object file, you can enter the following at your OpenVMS prompt to get the .IDENT information:

ANALYZE/OBJ FILE.OBJ

For more information about “module version” strings, refer to your OpenVMS Linker manual.

Examples

In the following example, the string “V5.1 ‑ 040392” is included in the object file for the main routine, and “V5.1 ‑ 031092” is included in the sub subroutine’s object file.

main
.ident "V8.1 - 040392"
proc

    .
    .
    .
endmain
subroutine sub
.ident "V8.1 - 031092"
proc

    .
    .
    .
endsubroutine

If the second .IDENT directive is not specified, the first string “V5.1 ‑ 040392” is included in the object files for both routines.

In our example, if you enter

what file.dbo

at the UNIX prompt, the following information is printed:

V8.1 – 040392
V8.1 – 031092

If you enter:

analyze/obj/mhd file.obj

at the OpenVMS prompt on an Alpha machine, the following information is printed. (On an I64, the fifth line of text would say, “This is an OpenVMS IA64 (Elf format) object file.”)

Analyze Object File                     20-FEB-2006 17:05:41.51   Page 1
DKA600:[NIGEL]FILE.OBJ;1
ANALYZ A05-19
analyze/obj/mhd file.obj
This is an OpenVMS Alpha object file
1.  MODULE HEADER (EOBJ$C_EMH), 64 bytes
        structure level: 2
        maximum record size: 8192
        module name: "MAIN$PROGRAM"
        module version: "V8.1 - 040392"
        creation date/time: 20-FEB-2006 17:02
2.  LANGUAGE PROCESSOR HEADER (EMH$C_LNM), 23 bytes
        Textual information:
        "Synergy DBL 8.1"
3.  TITLE HEADER (OBJ$C_HDR_TTL), 18 bytes
        Textual information:
        "MAIN$PROGRAM"
6.  END OF MODULE (EOBJ$C_EEOM), 24 bytes
        severity successful (0)
        Highest conditional linkage index: 0
        psect: 0
        value: 0 (%X’00000000’)
        transfer address flags:
                 (0)  EEOM$V_WKTFR         0
Analyze Object File                     20-FEB-2006 17:05:41.51   Page 2
DKA600:[NIGEL]FILE.OBJ;1
ANALYZ A05-19
SUMMARY STATISTICS:
Record Type    Count    Total Bytes
OBJ$C_DBG          0          0
OBJ$C_TBT          0          0
EOBJ$C_EMH         3        105
EOBJ$C_EEOM        1         24
EOBJ$C_EGSD        0          0
EOBJ$C_ETIR        0          0
EOBJ$C_EDBG        0          0
EOBJ$C_ETBT        0          0
Totals             4        129
The analysis uncovered NO errors.