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