#!/bin/ksh93
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh 1.4 
#  
# Licensed Materials - Property of IBM 
#  
# COPYRIGHT International Business Machines Corp. 2005,2012 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
# @(#)30	1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:11

# Start of POD-formatted documentation. Viewing suggestions:
#      perldoc <FILENAME>
#      pod2text -c <FILENAME>
#      pod2text -c --code <FILENAME>
#      pod2html <FILENAME>
function devDoc {
    : <<'=cut' >/dev/null 2>&1

=head1 NAME

KLIB_HACMP_generate_name

=head1 VERSION

 Version Number:  1.4
 Last Extracted:  1/31/14 04:40:28
 Last Changed:    6/10/12 15:22:11

 Path, Component, Release(, Level):
 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714

=head1 SYNOPSIS

KLIB_HACMP_generate_name

=head1 DESCRIPTION

Generate a unique name for a given PowerHA ODM
that also adheres to length requirements.

=head1 ARGUMENTS

 1: sa_key [REQUIRED] [string]

 2: len [OPTIONAL] [integer]
    The maximum key length.

 3: suffix [OPTIONAL] [string]

 4: odm [OPTIONAL] [string]

 5: field_name [OPTIONAL] [string[

=head1 RETURN

 0: no errors were detected; the operation appears to have been successful
 1: a general error has occurred
 2: a specified resource does not exist, or could not be found
 3: some required input was missing
 4: some detected input was incorrect in some way
 5: a required dependency does not exist
 6: a specified search failed to match any data

=head1 COPYRIGHT

COPYRIGHT International Business Machines Corp. 2005,2010
All Rights Reserved

=cut
} # End of POD-formatted documentation.


function KLIB_HACMP_generate_name {
    LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL"
    : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714
    : INPUTS: $*

    typeset sa_key=${1//\"/}
    integer len=${2//\"/}
    typeset suffix=${3//\"/}
    typeset odm=${4//\"/}
    typeset field_name=${5//\"/}

    [[ $CLMGR_LOGGING == 'med' ]] && set +x  # Only trace param values

    #===================================
    : Declare and initialize variables
    #===================================
    typeset temp_name=
    integer count=0
    integer sub_length=$len-${#suffix}

    name="${sa_key:0:$sub_length}${suffix}"

    while true ; do
	if [[ -z $(/usr/bin/odmget -q "$field_name=$name" $odm) ]] ; then
	    # name not found, so it is a good one.
	    break;
	fi

	count=$count+1
	if (( count >= 100 )) ; then 
	    # after 99 times, quit with error
        log_return_msg 1 "$0()" "$LINENO"
	    return $?
	fi

	sub_length=$len-${#suffix}-${#count}-1
	name="${sa_key:0:$sub_length}_${count}${suffix}"
    done

    echo $name

    log_return_msg 0 "$0()" "$LINENO"
    return $?
} # End of "KLIB_HACMP_generate_name()"
