Re: perl to query informix
Posted in 1998
Edward
A quick and dirty translation:
#!/usr/bin/perl
`export INFORMIXSERVER=n36_shm; \\
echo "UNLOAD TO '/net/n28/u1/out/share/edv/Ebase/c04b.txt' DELIMITER
'|'
SELECT EXTEND (start, YEAR to DAY), EXTEND (start, HOUR to MINUTE),
subj1, subj3, switchid,
dr_cand, dr_out, dr_in,
ra_total_value, ra_false_value, ra_vox_value, ravox_fls_value,
ir_cel_ho_req, ir_cel_ho_scomp, ir_cel_ho_sfail, ir_cel_ho_tcomp,
ir_cel_ho_tfail,
ir_sw_ho_scomp, ir_sw_ho_sfail, ir_sw_ho_tcomp, ir_sw_ho_talloc,
ir_sec_ho_req, ir_sec_ho_scomp, ir_sec_ho_sfail, ir_sec_ho_tcomp,
ir_sec_ho_tfail,
ia_sec_ho_req, ia_sec_ho_comp, ia_sec_ho_sfail, ia_sec_ho_tfail,
ir_tier_ho_comp, ir_tier_ho_fail,
em_ho_req, em_ho_comp, em_ho_fail,
ci_ho_dcomp, ci_ho_dfail, ci_ho_ucomp, ci_ho_ufail, fast_ho_req
FROM tmmc0_4b_980708
WHERE EXTEND (start, HOUR to MINUTE) = "12:00" | \\
dbaccess pmsys 2>/dev/null`;
#
# If you now want to do something with the data
#
open(DATAFILE, '/net/n28/u1/out/share/edv/Ebase/c04b.txt') || \\
die "Cant open datafile\\n";
chop(@datafile = <DATAFILE>);
foreach (@datafile)
{
# Do something here
}
close DATAFILE;
Alternatively, if your objective is to process the data rather than unload
to flat file, then you can populate the array @datafile directly, like so:
chop(@datafile = `export INFORMIXSERVER=n36_shm; \\
echo "SELECT EXTEND (start, YEAR to DAY), EXTEND (start, HOUR to MINUTE),
subj1, subj3, switchid,
dr_cand, dr_out, dr_in,
ra_total_value, ra_false_value, ra_vox_value, ravox_fls_value,
ir_cel_ho_req, ir_cel_ho_scomp, ir_cel_ho_sfail, ir_cel_ho_tcomp,
ir_cel_ho_tfail,
ir_sw_ho_scomp, ir_sw_ho_sfail, ir_sw_ho_tcomp, ir_sw_ho_talloc,
ir_sec_ho_req, ir_sec_ho_scomp, ir_sec_ho_sfail, ir_sec_ho_tcomp,
ir_sec_ho_tfail,
ia_sec_ho_req, ia_sec_ho_comp, ia_sec_ho_sfail, ia_sec_ho_tfail,
ir_tier_ho_comp, ir_tier_ho_fail,
em_ho_req, em_ho_comp, em_ho_fail,
ci_ho_dcomp, ci_ho_dfail, ci_ho_ucomp, ci_ho_ufail, fast_ho_req
FROM tmmc0_4b_980708
WHERE EXTEND (start, HOUR to MINUTE) = "12:00" | \\
dbaccess pmsys 2>/dev/null`);
$i = 0;
foreach (@datafile)
{
if (($i <= 4) || ($_ eq ''))
{
next;
}
# Do something here
}
HTH
Sujit Pal
______________________________ Reply Separator
_________________________________
Subject: perl to query informix
Author: "Edward Villalovoz" <edwardv@jps.net> at internet
Date: 7/9/98 11:35 PM
Can anyone tell me how to convert this csh script into a perl script?
I would rather not use dbi or any other add-ons. Thanks
#!/bin/csh
setenv INFORMIXSERVER n36_shm dbaccess << eof
database pmsys@n36;
UNLOAD TO '/net/n28/u1/out/share/edv/Ebase/c04b.txt' DELIMITER '|'
SELECT EXTEND (start, YEAR to DAY), EXTEND (start, HOUR to MINUTE),
subj1, subj3, switchid,
dr_cand, dr_out, dr_in,
ra_total_value, ra_false_value, ra_vox_value, ravox_fls_value,
ir_cel_ho_req, ir_cel_ho_scomp, ir_cel_ho_sfail, ir_cel_ho_tcomp,
ir_cel_ho_tfail,
ir_sw_ho_scomp, ir_sw_ho_sfail, ir_sw_ho_tcomp, ir_sw_ho_talloc,
ir_sec_ho_req, ir_sec_ho_scomp, ir_sec_ho_sfail, ir_sec_ho_tcomp,
ir_sec_ho_tfail,
ia_sec_ho_req, ia_sec_ho_comp, ia_sec_ho_sfail, ia_sec_ho_tfail,
ir_tier_ho_comp, ir_tier_ho_fail,
em_ho_req, em_ho_comp, em_ho_fail,
ci_ho_dcomp, ci_ho_dfail, ci_ho_ucomp, ci_ho_ufail,
fast_ho_req
FROM tmmc0_4b_980708
WHERE EXTEND (start, HOUR to MINUTE) = "12:00";eof