#!/bin/ksh
##########################################################################
# Title      :	sequence - print sequence of numbers
# Author     :	Heiner Steven <heiner.steven@odn.de>
# Date       :	1995-07-13
# Requires   :	
# Category   :	Text Utilities
# SCCS-Id.   :	@(#) sequence	1.2 03/12/19
##########################################################################
# Description
#
##########################################################################

PN=`basename "$0"`			# program name
VER='1.2'

n=10 Start=1 Step=1

usage () {
    echo "$PN - print sequence of numbers, $VER (stv '95)
usage: $PN [count]
    or $PN start count [step]

Prints count numbers (default is $n) starting with start (default is $Start)
increment step (default is $Step)" >&2
    exit 1
}

msg () {
    for i
    do echo "$PN: $i" >&2
    done
}

fatal () { msg "$@"; exit 1; }

set -- `getopt h "$@"`
while [ $# -gt 0 ]
do
    case "$1" in
	--)	shift; break;;
	-h)	usage;;
	-*)	usage;;
	*)	break;;			# First number
    esac
    shift
done

case $# in
    0)	;;				# Use default values
    1)	n="$1";;
    2)  Start="$1"; n="$2";;
    3)	Start="$1"; n="$2"; Step="$3";;
    *)	usage;;
esac

# Check numbers
for number in "$n" "$Start" "$Step"
do
    expr "$number" + 1 > /dev/null 2>&1 || fatal "no integer: $number"
done

FastMath=no
[ 1+1 -eq 2 ] && FastMath=yes

i=0
while [ $i -lt $n ]
do
    if [ $FastMath = yes ]
    then
	echo "$((i*Step+Start))"
	((i=i+1))
    else
	expr $i \* $Step + $Start
	i=`expr $i + 1`
    fi
done
exit 0
