awk help

Hi All.

I have the following datafile on which I am running the awk script

H|00000013|08-MAY-2006|||43
L|BP|OTH001138|PO|C000020|EA
|PQ||0||13-FEB-2006
|FI||3000||29-MAY-2006
|MT||9000||17-JUL-2006
F|3000|C|W|08-MAY-2006
F|5000|D|W|05-JUN-2006
F|1000|D|W|26-JUN-2006

But I am not getting the desired results. I am new to awk, so I modified an existing script to make it according to my requirement.

Here is the awk script.

BEGIN { FS = "|"
print_header=0
print_SHP=0
OLD_QTY=0
line=0
}

{
if( $1 == "H" )
{
RL_NUMB=$2
HS_DATE=$3
HC_DATE=$4
## HE_DATE=$5
SHIP_TO=$6
SHIP_FROM=$7
IC_CODE=$9
}

if ( $1 == "L" && line == 1 )
{
printf("--------------------- END OF THE %s -------------------------\n\n\n",BP_NUMB)
##YTD_QTY=$9
##YTQ=0
print("")
print_header=0
}

if( $1 == "L" )
{
BP_NUMB=$3
PO_NUMB=$5
UOM=$6
# YTD_QTY=$9
# YTQ=0
line=1

print(" 830 Material Release Schedule \n \n")
print_header=1
printf("SHIP TO :%-10s SHIP FROM :%-10s IC CODE :%-10s\n",SHIP_TO,SHIP_FROM,IC_CODE)
#printf("Contact :%-30s Telephone:%s\n",REP,REP_PH)
printf("PO Number :%-20s Horizont Start :%-10s\n",PO_NUMB,HS_DATE)
printf("Release # :%-20s Horizont End :%-10s\n",RL_NUMB,HE_DATE)
printf("BP Number :%-20s Create Date :%-10s\n\n",BP_NUMB,HC_DATE)
print("________________________________________________________________________________\n")
print("FORECAST PERIOD DATE REQUIRED ORDER_QTY\n")
}

if( $1 == "F" && $3 == "D" )
{

if ($4 == "W" )
printf("Firm Weekly %-20s %-20s\n",$5,$2)
if ($4 == "F" )
printf("Firm Monthly %-20s %-s Flexible Interval\n",$5,$2)
if ($4 == "D" )
printf("Firm Discreate %-20s %-20s\n",$5,$2)

if( $4 == "W" )
printf("Planning Weekly %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "D" )
printf("Planning Discrete %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "F" )
printf("Planning Monthly %-10s %10s %10s Flexible Interval\n",$6,$2,$2-OLD_QTY)
}

if( $1 == "F" && $3 == "C" )
{

if ( $4 == "W" )
printf("Firm Weekly %-20s %-20s\n",$5,$2)
if ( $4 == "F" )
printf("Firm Monthly %-20s %-s Flexible Interval\n",$5,26)
if ( $4 == "D" )
printf("Firm Discrete %-20s %-20s\n",$5,$2)

if ( $4 == "W" )
printf("Firm Weekly %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if ( $4 == "F" )
printf("Firm Monthly %-10s %10s %10s Flexible Interval\n",$6,$2,$2-OLD_QTY)
if ( $4 == "D" )
printf("Firm Discrete %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
}

if( $1 == "Y" && $2 == 01 )
{
DELIVERED=$3
DEL_DATE=$5
}

if( $1 == "Y" && $2 == 02 )
{
QUM_QUANT=$3
printf("\nDelivered :%-10s Date:%-s Cumulative Quantity:%-s\n\n",DELIVERED,DEL_DATE,QUM_QUANT)
printf("--------------------- END OF THE %s -------------------------\n\n\n",BP_NUMB)
print("")
print_header=0
line=0
}
}

And the output it is showing is like this

                   830 Material Release Schedule

SHIP TO :43 SHIP FROM : IC CODE :
PO Number :C000020 Horizont Start :08-MAY-2006
Release # :00000013 Horizont End :
BP Number :OTH001138 Create Date :

________________________________________________________________________________

FORECAST PERIOD DATE REQUIRED ORDER_QTY

Firm Weekly 08-MAY-2006 3000
Firm Weekly 08-MAY-2006 3000 3000
Firm Weekly 05-JUN-2006 5000
Planning Weekly 05-JUN-2006 5000 5000
Firm Weekly 26-JUN-2006 1000
Planning Weekly 26-JUN-2006 1000 1000
~
~
Actually along with order qty, it is also giving me the ship qty. But we haven't ship any quantity. I have looked in the script but could not find from where it gets the ship quantity. I want to suppress the ship quantity and also
the lines for which there are no order quantity.

Here is the desired output

                 830 Material Release Schedule

SHIP TO :43 SHIP FROM : IC CODE :
PO Number :C000020 Horizont Start :08-MAY-2006
Release # :00000013 Horizont End :
BP Number :OTH001138 Create Date :

________________________________________________________________________________

FORECAST PERIOD DATE REQUIRED ORDER_QTY

Firm Weekly 08-MAY-2006 3000

Planning Weekly 05-JUN-2006 5000

Planning Weekly 26-JUN-2006 1000

Regards,
Inder

Inder,
You just ned to delete certain lines from the script given to achieve your o/p. but I am not sure if that is what youare looking at. Delete the below cloured bold lines
if( $1 == "F" && $3 == "D" )
{

if ($4 == "W" )
printf("Firm Weekly %-20s %-20s\n",$5,$2)
if ($4 == "F" )
printf("Firm Monthly %-20s %-s Flexible Interval\n",$5,$2)
if ($4 == "D" )
printf("Firm Discreate %-20s %-20s\n",$5,$2)

if( $4 == "W" )
printf("Planning Weekly %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "D" )
printf("Planning Discrete %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "F" )
printf("Planning Monthly %-10s %10s %10s Flexible Interval\n",$6,$2,$2-OLD_QTY)
}

if( $1 == "F" && $3 == "C" )
{

if ( $4 == "W" )
printf("Firm Weekly %-20s %-20s\n",$5,$2)
if ( $4 == "F" )
printf("Firm Monthly %-20s %-s Flexible Interval\n",$5,26)
if ( $4 == "D" )
printf("Firm Discrete %-20s %-20s\n",$5,$2)

if ( $4 == "W" )
printf("Firm Weekly %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if ( $4 == "F" )
printf("Firm Monthly %-10s %10s %10s Flexible Interval\n",$6,$2,$2-OLD_QTY)
if ( $4 == "D" )
printf("Firm Discrete %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
}

And change the lines
if( $1 == "F" && $3 == "D" )
{

if( $4 == "W" )
printf("Planning Weekly %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "D" )
printf("Planning Discrete %-10s %10s %10s\n",$5,$2,$2-OLD_QTY)
if( $4 == "F" )
printf("Planning Monthly %-10s %10s %10s Flexible Interval\n",$6,$2,$2-OLD_QTY)
}

to

if( $1 == "F" && $3 == "D" )
{

if( $4 == "W" )
printf("Planning Weekly %-10s %10s \n",$5,$2)
if( $4 == "D" )
printf("Planning Discrete %-10s %10s \n",$5,$2)
if( $4 == "F" )
printf("Planning Monthly %-10s %10s Flexible Interval\n",$6,$2)
}

Hi Ranj,

Thanks much for your help!!!!

Regards,
Inder