#!/bin/sh
#=======================================================================
# user modifyable custom job with prebuilt year/month loop --- cloop ---
# $Id: cloop_jobdef 616 2009-05-29 22:21:17Z acrnrls $
#=======================================================================
# keyword :: cloop
# short description :: custom job with prebuilt year/month loop
set -a
. betapath2

username="acrnxxx"; user="XXX";
runid=job000; uxxx='uxxx'; crawork="${runid}_job"

nextjob=on
noprint=on

jobname=cloop; time="600" ; memory="900mb" ;

. comjcl.cdk

cat > Execute_Script <<'end_of_script'

  # bail is a simple error exit routine
  bail(){
    echo "cloop: "$1
    echo " " >> haltit
    exit 1
  }

#  * ........................... Parmsub Parameters ............................

  runid=job000; uxxx='uxxx'; cloop_uxxx=$uxxx;
  cloop_prefix="${cloop_uxxx}_${runid}";
  cloop_prefix_=${cloop_prefix}_
  prefix=$cloop_prefix_
  crawork="${runid}_job"; username="acrnxxx"; user="XXX";

  # These variables are set when the job string is created
  run_start_year=NotSet
  run_start_month=NotSet
  run_stop_year=NotSet
  run_stop_month=NotSet
  current_year=NotSet
  current_month=NotSet
  previous_year=NotSet
  previous_month=NotSet
  next_year=NotSet
  next_month=NotSet
  [ $current_year = "NotSet" -o $current_month = "NotSet" ] && \
    bail "current_year or current_month is not set"

  # This job will be for months in the range:
  # cloop_start_year,cloop_start_mon to cloop_end_year,cloop_end_mon
  if [ $previous_year = "NotSet" -o $previous_month = "NotSet" ]; then
    if [ $next_year = "NotSet" -o $next_month = "NotSet" ]; then
      bail "Neither previous_(year|month) nor next_(year|month) are set"
    else
      cloop_start_year=$current_year
      cloop_start_mon=$current_month
      cloop_end_year=$next_year
      cloop_end_mon=$next_month
    fi
  else
    cloop_start_year=$previous_year
    cloop_start_mon=$previous_month
    cloop_end_year=$current_year
    cloop_end_mon=$current_month
  fi

  cloop_start_year=`echo $cloop_start_year|awk '{printf "%3.3d",$1}' -`
  cloop_start_mon=`echo $cloop_start_mon|awk '{printf "%2.2d",$1}' -`
  cloop_end_year=`echo $cloop_end_year|awk '{printf "%3.3d",$1}' -`
  cloop_end_mon=`echo $cloop_end_mon|awk '{printf "%2.2d",$1}' -`

  [ -z "$cloop_start_year" ] && bail "cloop_start_year is null"
  [ -z "$cloop_end_year" ]   && bail "cloop_end_year is null"
  [ -z "$cloop_start_mon" ]  && bail "cloop_start_mon is null"
  [ -z "$cloop_end_mon" ]    && bail "cloop_end_mon is null"
  [ $cloop_start_mon -gt 12 -o $cloop_start_mon -lt 1 ] &&\
    bail "cloop_start_mon=$cloop_start_mon is out of range"
  [ $cloop_end_mon -gt 12 -o $cloop_end_mon -lt 1 ] &&\
    bail "cloop_end_mon=$cloop_end_mon is out of range"
  [ $cloop_start_year -gt $cloop_end_year ] &&\
    bail "cloop_start_year=$cloop_start_year is out of range"

# <<INSERT_CLOOP_HEAD_COMMANDS_HERE>>

  # Define a year/month loop
  join=0
  yyy=`echo $cloop_start_year|awk '{y=$1-1;printf "%3.3d", y}' -`
  while [ $yyy -lt $cloop_end_year ]; do
    yyy=`echo $yyy|awk '{y=1+$1;printf "%3.3d", y}' -`
    if [ $yyy -eq $cloop_start_year ]; then
      mm=`echo $cloop_start_mon|awk '{m=$1-1;printf "%2.2d", m}' -`
    else
      mm=0
    fi
    if [ $yyy -eq $cloop_end_year ]; then
      mm_end=$cloop_end_mon
    else
      mm_end=12
    fi
    while [ $mm -lt $mm_end ]; do
      mm=`echo $mm|awk '{m=1+$1;printf "%2.2d", m}' -`
      join=`echo $join|awk '{j=1+$1;printf "%d",j}' -`

# <<INSERT_CLOOP_COMMANDS_HERE>>

    done  # end of month loop
  done  # end of year loop

# <<INSERT_CLOOP_TAIL_COMMANDS_HERE>>

end_of_script

. endjcl.cdk

#end_of_job

