Home About BC DR HA Support Training Download
You are here: Home/ Downloads/ Scripts/ Korn/ Functions/ Please Login or Register

-
Current Location
-

js
  Downloads
    Scripts
      Korn
        Functions
-
AIX Admin Methodology
Global Consolidation Project
All AIX admins should join
www.aixexpert.com


Join our LinkedIn Group
AIX Advanced Technical Experts
Contract Opportunities

www.LinkedIn.com

-
digg Digg this page
del.icio.us Post to del.icio.us
Slashdot Slashdot it!


LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com

displaydom_k93



#!/usr/bin/ksh93
################################################################
function usagemsg_displaydom_k93 {
  print "
Program: displaydom_k93

This script examines a calendar for a specified month and year and
outputs a day of the month or a list of days of the month on which a
specified day of the week occurs. For example, this script will output
the dates for all of the Sundays in February 2006, or it can output the
date of the second Sunday in February 2006.

Usage: ${1##*/} [-?] [-v] [-V] [-d WeekdayNumber] [-m Month -y Year]
                [-o Occurance] [-D Delimiter] [-F]
    Where:
          '-d' = Weekday number, i.e., 0=Sun, 1=Mon, 2=Tue,
                 3=Wed, 4=Thu, 5=Fri, 6=Sat
                 Default value is 0 representing Sunday.
          '-m' = Two digit month number from 1 - 12,
                 1=January, 2=February, 3=March, etc.
                 Default value is current month.
          '-y' = Four digit year number.  If the year is specified
                 on the command line, the month must also be specified.
                 Default value is current year.
          '-o' = Single digit number specifying occurance 
                 of the weekday during the month, i.e., 1=first, 
                 2=second, 3=third, 4=fourth, 5=fifth.
                 Default value is all occurances.
          '-D' = Single character to use as field delimiter between
                 dates in output stream.
                 Default value is colon (:)
          '-F' = Full date output in format YYYYMMDD.
                 Default format is DD.
          '-v' = Verbose mode
          '-V' = Very Verbose Mode

Example: displaydom_k93 -d 0 -m 2 -y 2006

Author: Dana French (dfrench@mtxia.com)
        Copyright 2006 by Dana French

\"AutoContent\" enabled"
return 0
}
################################################################
function displaydom_k93
{
  typeset TRUE="0"   
  typeset FALSE="1"  
  typeset VERBOSE="${FALSE}"
  typeset VERYVERB="${FALSE}"
  typeset DOW="0"
  typeset MON=""
  typeset YEAR=""
  typeset ICNT="0"
  typeset OCCUR=""
  typeset FULL="${FALSE}"
  typeset VERSION="1.0"
  typeset DELIM=" "
  typeset TMP=""
  typeset Y=""
  typeset M=""
  DAYPOS=( 0 3 6 9 12 15 18 )
  
  while getopts ":d#m#y#o#D:FvV" OPTION
  do
      case "${OPTION}" in
          'd') DOW="${OPTARG}";;
          'm') MON="${OPTARG}";;
          'y') YEAR="${OPTARG}";;
          'o') OCCUR="${OPTARG}";;
          'F') M=$( date +"%m" )
               Y=$( date +"%Y" )
               FULL="${TRUE}";;
          'D') DELIM="${OPTARG}";;
          'v') VERBOSE="${TRUE}";; 
          'V') VERYVERB="${TRUE}";;
          '?') usagemsg_displaydom_k93 "${0}" && return 1;;
          ':') usagemsg_displaydom_k93 "${0}" && return 1;;
          '#') usagemsg_displaydom_k93 "${0}" && return 1;;
      esac
  done

  shift $(( ${OPTIND} - 1 ))
  
  (( VERBOSE == TRUE )) && print -u 2 -- "# displaydom Version.......: ${VERSION}"

  trap "usagemsg_displaydom_k93 ${0}" EXIT
  if [[ "_${DOW}" != "_" ]] && (( DOW < 0 )) || (( DOW > 6 ))
  then
      print -u 2 "# ERROR: Invalid day of the week specified, (valid values 0-6)"
      return 2
  fi
  if [[ "_${MON}" != "_" ]] && (( MON < 1 )) || (( MON > 12 ))
  then
      print -u 2 "# ERROR: Invalid month number specified, (valid values 1-12)"
      return 3
  fi
  if [[ "_${YEAR}" != "_" ]] && (( YEAR < 0 ))
  then
      print -u 2 "# ERROR: Invalid year number specified"
      return 4
  fi
  if [[ "_${OCCUR}" != "_" ]] && (( OCCUR < 1 )) || (( OCCUR > 5 ))
  then
      print -u 2 "# ERROR: Invalid occurance number specified, (valid values 1-5)"
      return 5
  fi
  if [[ "_${YEAR}" != "_" ]] && [[ "_${MON}" == "_" ]]
  then
      print -u 2 "# ERROR: Month must also be specified when specifying year."
      return 6
  fi
  if [[ "_${MON}" != "_" ]] && [[ "_${YEAR}" == "_" ]]
  then
      print -u 2 "# ERROR: Year must also be specified when specifying month."
      return 7
  fi
  trap "-" EXIT

  (( VERYVERB == TRUE )) && set -x

################################################################

  (( FULL == TRUE )) &&
      typeset -Z2 M="${MON:-$( date +'%m' )}" &&
      typeset -Z4 Y="${YEAR:-$( date +'%Y')}"

  cal ${MON} ${YEAR} | while IFS='' read -r -- LINE
  do
    [[ "_${LINE}" == _*+([a-zA-Z])* ]] && continue

    if [[ "_${OCCUR}" != "_" ]]
    then
        [[ "_${LINE:${DAYPOS[DOW]}:2}" == _+([ ]) ]] && continue
        (( OCCUR != ++ICNT )) && continue
    fi

    typeset -Z2 VAL="${LINE:${DAYPOS[DOW]}:2}"

    (( VERBOSE == TRUE )) && [[ "_${VAL# }" == _+([0-9]) ]] &&
        print -u 2 -- "# Adding ${Y}${M}${VAL# } to list of dates"

    [[ "_${VAL# }" == _+([0-9]) ]] && TMP="${TMP} ${Y}${M}${VAL# }"

  done
  set -- ${TMP}

  IFS="${DELIM:0:1}"
  [[ "_${*}" != "_" ]] && print "${*}"

  return 0
}
################################################################

displaydom_k93 "${@}"

-
Display Day of Month
-
 


LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

FREE Domain Registration
included with Web Site Hosting
Tools, Social Networking, Blog

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com