A problem of "awsconvckd",

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

A problem of "awsconvckd",

dengqiangang

I met a big problem in recent work, Can you give a hand to me?
anyway, I think it would not be a big problem for the friends in
this group.

my problem is when I try to run the perl program "awsconvckd-
v0.6.pl", which is used to convert volumes in FLEX-ES to ckd in
Hercules.But it can not run correctly. It seems that you have ever
done the kind of job. So can you give me some direction?

the symptoms is as following,
As we know, we should assign a "newdasd" when we run the progarm. If
there is not already a file "newdasd" there , eorror "can't update
newdasd, No such file or directory" occured.
If I create a blank file named "newdasd", another error "can't read
hercules track 0" occured.
If I paste a hercules volume(not blamk,about 300M byte)
named "newdasd" there, another error "Track 213(14/3)@124324substr
outside of string at awsconvckd¡­" occured.

I am going crazy, what should I do?
Following is the progarm I used.


#!/usr/bin/perl
# convert FLEX-ES DASD to AWSCKD DASD
$version = "0.6";
$numprm = @ARGV; # used for detecting empty command line

require 'getopts.pl'; # module for reading command line
parameters
#require 'getopts';
&Getopts('i:o:m:v:dhV');

# -------------------------------------------------------------------
------

# Variables needed for hex conversion

$h0="00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ";
$h1="10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ";
$h2="20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f ";
$h3="30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f ";
$h4="40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f ";
$h5="50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f ";
$h6="60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f ";
$h7="70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f ";
$h8="80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f ";
$h9="90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f ";
$ha="a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af ";
$hb="b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf ";
$hc="c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf ";
$hd="d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df ";
$he="e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef ";
$hf="f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff ";

$hex=$h0.$h1.$h2.$h3.$h4.$h5.$h6.$h7.$h8.$h9.$ha.$hb.$hc.$hd.$he.$hf;

$e0="................";
$e1="................";
$e2="................";
$e3="................";
$e4=" ............(..";
$e5=".............)..";
$e6="................";
$e7="................";
$e8=".abcdefghi......";
$e9=".jklmnopqr......";
$ea=".ßstuvwxyz......";
$eb="................";
$ec="äABCDEFGHI......";
$ed="üJKLMNOPQR......";
$ee="?STUVWXYZ......";
$ef="0123456789......";

$ebcdic=$e0.$e1.$e2.$e3.$e4.$e5.$e6.$e7.$e8.$e9.$ea.$eb.$ec.$ed.$ee.$
ef;

$a0=" ................";
$a1="................";
$a2=" ..#$%..()*+,-..";
$a3="0123456789:;<=>?";
$a4=".ABCDEFGHIJKLMNO";
$a5="PQRSTUVWXYZ[.]._";
$a6=".abcdefghijklmno";
$a7="pqrstuvwxyz{.}..";
$a8="................";
$a9="................";
$aa="................";
$ab="................";
$ac="................";
$ad="................";
$ae="................";
$af="................";

$ascii=$a0.$a1.$a2.$a3.$a4.$a5.$a6.$a7.$a8.$a9.$aa.$ab.$ac.$ad.$ae.$a
f;

# -------------------------------------------------------------------
------
# Subroutines
# -------------------------------------------------------------------
------

sub translate() { # take a decimal value $dez and
return hex, EBCDIC and ASCII character
   $pos = $dez * 3; # calculate position in
hex table
   $ohex = substr($hex, $pos, 3); # find ehx value
   $oebc = substr($ebcdic,$dez,1); # find EBCDIC value
   $oasc = substr($ascii,$dez,1); # find ASCII value
};

sub convert2hex($) { # convert the passed
string into a new string with hex and EBCDIC  
   my ($cin) = @_; # input string

   $cout = ""; # reset outline
   $chex = ""; # reset hex block
   $cebc = ""; # reset EBCDIC block
   $casc = ""; # reset ASCII block
   $clen = length($cin);   # calculate length of input
string
   for ($i=0 ; $i<=$clen; $i++) { # loop through each 'character'
      $bytec1 = substr($cin,$i,1); # fetch a byte ...
      $byted1 = vec $bytec1,0,8; # determine decimal value
      $dez = $byted1; #
      translate(); # convert that one byte to hex,
EBCDIC and ASCII
      $chex = $chex.$ohex; # join hex line
      $cebc = $cebc.$oebc; # join EBCDIC line
      $casc = $casc.$oasc; # join ASCII line
   };
   $cout = $chex." (".$cebc.")"; # ok, that's it, give me hex +
EBCDIC
   return $cout; # return output line to caller

};

# -------------------------------------------------------------------
------
if ($opt_i eq "") { $opt_i = "olddasd"; }; # did we get an infile
name? no, default to olddasd
$ifile    = $opt_i; # transfer to
ifile variable

if ($opt_o eq "") { $opt_o = "newdasd"; }; # did we get an outfile
name? no, default to newdasd
$ofile  = $opt_o; # transfer to ofile
variable

if ($opt_m eq "") { $opt_m = "3390-3"; }; # did we get a DASD
model? no, default to 3390-3
$model  = $opt_m; # transfer to model
variable

if ($opt_v eq "") { $opt_v = "NEWDSK"; }; # did we get a volser?
no, default to NEWDSK
$volser  = $opt_v; # transfer to volser
variable

if ($opt_V) { # want to see
the version number?
   print "awsconvckd Version ".$version."\n"; # here we go
   exit # and leave
};

if ($opt_d eq "") { $opt_d = 0; }; # debug switch turned
on?
$debug  = $opt_d; # set debug variable

if ( $opt_h || $numprm < 1 ) { # ok, you
want to see the help text
   print "usage is\n";
   print "awsconvckd -i infile -o outfile -m model -v volser\n";
   print "    -d          write debug information to a file
called 'debug'\n";
   print "    -i infile   name of FLES-ES DASD file,
default 'olddasd'\n";
   print "    -m model    DASD model, e.g. 3390-1, 3390-3,
default '3390-3'\n";
   print "    -o outfile  name of new AWSCKD DASD file,
default 'newdasd'\n";
   print "    -v volser   volser to give to new AWSCKD DASD,
default 'NEWDSK'\n";
   print "    -V          print version\n";
   exit # ... and out
};

if    ( $model eq "3390-1") { $numcyls = 1113; } # find the
number of cylinders of the
elsif ( $model eq "3390-2") { $numcyls = 2226; } # specific
DASD model
elsif ( $model eq "3390-3") { $numcyls = 3339; } # feel free
to add your model
elsif ( $model eq "3390-9") { $numcyls = 10017; }
elsif ( $model eq "3390-27") { $numcyls = 32760; }
else  {
   print "DASD model ".$model." is not supported\n"; # ok, you
messed it up, we don't know that model
   exit
        # ... and out
};

print "\n"; #
make output a little bit more readable
print "using Infile: ".$opt_i.", Outfile: ".$opt_o.",
Model: ".$opt_m.", Volser: ".$opt_v."\n"; # show what we are
dealing with
print "\n"; #
make output a little bit more readable

# create a new empty hercules dasd volume
#system "rm ".$ofile; #
erase the old one ...
#system "dasdinit -lfs ".$ofile." ".$model." ".$volser;
        # ... and create a new empty AWSCKD DASD file
#system "dasdinit newdasd 3390 TEST12 10076";
#

# common parameters
$ckdrecsize = 56664; # size of a logical track in bytes
#$numcyls    = 3339; # number of cylinders of the dasd device
$trkspercyl = 15; # number of tracks per cylinder of dasd device
$empty      = chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr
(0) ; # 8X'00'
$EOT        = chr(255).chr(255).chr(255).chr(255).chr(255).chr
(255).chr(255).chr(255) ; # 8X'FF'

# hercules parameters
$herchdrlen = 512; # hercules length of internal header of dasd file
before tracks start
$herctrkhdrlen = 5; # hercules track header length
$hercdatsuflen = 0; # hercules data record suffix length
$hercreclen = 56832; # hercules dasd file track record length

# FLEX-ES parameters
$flexhdrlen = 52; # flex-es length of internal header of dasd file
before tracks start
$flextrkhdrlen = 0; # flex-es track header length
$flexdatsuflen = 4; # flex-es data record suffix length
$flexreclen = 58368; # flex-es dasd file track record length
#

$lowtrcknum  = 0; # start processing here
$tottrcksnum = $numcyls * $trkspercyl; # total number of
tracks on dasd device to process
#$lowtrcknum  = 75; # start processing here
#$tottrcksnum = 120; # ... and end here
(uncomment if you have problems with specific tracks)

open(FLEX, "<".$ifile) || die "can't open ".$ifile." $!";
                # open input file
open(HERC, "+<".$ofile) || die "can't update ".$ofile." $!";
                # open output file
if ( $debug > 0 ) { open(DBG, ">debug") || die "can't open debug
$!"; }; # and maybe the 'debug' file

print "processing \n ";
                        # show the user what we are doing

for ($trk=$lowtrcknum; $trk<$tottrcksnum; $trk++) {
        # loop from first to last track

   $hercfilepos = $herchdrlen + $herctrkhdrlen + $trk * $hercreclen;
        # pointer to current track record in hercules dasd file
   $flexfilepos = $flexhdrlen + $flextrkhdrlen + $trk * $flexreclen;
        # pointer to current track record in flex-es dasd file

#   print $trk." > ".$hercfilepos."-".$flexfilepos."\n";
        # there was a point when I needed that

   seek(FLEX, $flexfilepos, 0);
                # position to track in FLEX-ES file ...
   read(FLEX, $flextrack, $flexreclen) == $flexreclen || die "can't
read FLEX-ES track $trk $!";   # ... and read track

   seek(HERC, $hercfilepos, 0);
                # position to track in AWSCKD file ...
   read(HERC, $herctrack, $ckdrecsize) == $ckdrecsize || die "can't
read hercules track $trk: $!"; # ... and read track
   
   # $rawtrack = substr($flextrack,0,$ckdrecsize);
   # ok, now we transfer the content of the flex-es track "record by
record" to the new hercules track
   $rawtrack = substr($herctrack,0,$ckdrecsize); # rawtrack is
my working variable
   $flexptr = 0; # reset all
pointers, FLEX-ES pointer ...
   $hercptr = 0; # ... AWSCKD
pointer ...
   $eotrack = 0; # ... and end-
of-track flag

   $rechdr = substr($flextrack,$flexptr,8); # record header from
flex-es record
   $fcyl = vec substr($rechdr,0,2),0,16; # determine FLEX-ES
cylinder number and
   $ftrk = vec substr($rechdr,2,2),0,16; # ... track number
   $hcyl = vec substr($rawtrack,0,2),0,16; # determine AWSCKD
cylinder number and
   $htrk = vec substr($rawtrack,2,2),0,16; # ... track number

   print "Track ".$trk." (".$fcyl."/".$ftrk.") @ ".$flexfilepos." to
(".$hcyl."/".$htrk.") @ ".$hercfilepos."     \r";
   if ( $debug > 0 ) { print DBG "Track ".$trk."
(".$fcyl."/".$ftrk.") @ ".$flexfilepos." to (".$hcyl."/".$htrk.")
@ ".$hercfilepos."     \n";   }; # tell user
where we are right now

   while ( $eotrack == 0 ) { #
doit until we hit end-of-track
    $rechdr = substr($flextrack,$flexptr,8); # take record
header from flex-es record ...
        $reclenhex = substr($rechdr,6,2); # ... find
out track length (hex) ...
        $reclendez = vec $reclenhex,0,16; # ... and
convert it to decimal
       
        $x1 = convert2hex($rechdr);
                # take the track header, make it readable ..
        if ( $debug > 0 ) { print DBG "FLEX-ES rechdr ".$x1."\n"; };
                # and write to 'debug' if wanted
        if ( $debug > 0 ) { print DBG "current CKD
pointer ".$hercptr."\n"; }; # that might be helpful as well

#   print "new record @".$hercptr." : ";

        if ( $rechdr eq $empty ) { # do we have
track data?
           substr($rawtrack,$hercptr,8) = $EOT; #
insert End-of-Track into hecules record
           $eotrack = 1; # set end-of-
track flag
#   print "EOT\n";
        } else {
           substr($rawtrack,$hercptr,8) = $rechdr; # transfer
the track header
           $flexptr = $flexptr + 8; # increase
FLEX-ES pointer beyond track header
           $hercptr = $hercptr + 8; # increase
AWSCKD pointer beyond track header
           $klenhex = substr($rechdr,5,1); # extract key
length ...
           $klendez = vec $klenhex,0,8;
        # ... and convert it to decimal
           $reclenhex = substr($rechdr,6,2); # extract the
data (record) length ...
           $reclendez = vec $reclenhex,0,16; # ... and
convert it to decimal
           $reclendez = $reclendez + $klendez; #
calculate K+D length
           if ( $debug > 0 ) { print DBG "Key-Length=".$klendez."
Rec-Length=".$reclendez."\n"; }; # dump it to 'debug'
#   print $reclendez."+".$klendez."\n";
           substr($rawtrack,$hercptr,$reclendez) = substr
($flextrack,$flexptr,$reclendez); # move the contents of one data
record
           $flexptr = $flexptr + $reclendez + $flexdatsuflen;#
increase FLEX-ES pointer
           $rlmod = $flexptr % 4;
                        # modulo functio
        n to determine fullword boundary
           if ( $rlmod > 0 ) { $fwbdry = 4 - $rlmod; $flexptr =
$flexptr + $fwbdry; }; # ok, we are not and fullword boundary
and have to adjust to the next one
           $hercptr = $hercptr + $reclendez + $hercdatsuflen;
                        # increase AWSCKD pointer
        };
   };

   substr($herctrack,0,$ckdrecsize) = $rawtrack;
                        # write rawtrack back to DASD buffer

   if ( $debug > 0 ) { # we
want to debug
     $raw32 = substr($rawtrack,0,32); #
and I want a 32 byte sample of this track;
     $x1 = convert2hex($raw32); #
convert it to somethign readable,
     $deb="final CKD track >>>>>>".$x1."... <<<<<<\n\n"; #
make it look nice,
     print DBG $deb; #
write that to 'debug'
     };

   seek(HERC, -$ckdrecsize, 1); # re-
position AWSCKD file ...
   print HERC "$herctrack"; # ... and
rewite buffer to AWSCKD file

};

close FLEX; # we're done close
infile ...
close HERC; # ... and outfile
if ( $debug > 0 ) { close DBG; }; # and 'debug' file (if necessary)

print "\ndone\n"; # the the user that we are
finished

# FLEX-ES dasd-layout
# -------------------
#
# <- dasd file header 52 bytes->
#
# < no track header >
# <- 8 bytes count -><- keylen bytes -><- record header 8 bytes -><-
data dlen bytes -><- X'00000000' ->< ??? >
# <- 8 bytes count -><- keylen bytes -><- record header 8 bytes -><-
data dlen bytes -><- X'00000000' ->< ??? >
# <- 8 bytes count -><- keylen bytes -><- record header 8 bytes -><-
data dlen bytes -><- X'00000000' ->< ??? >
# ...
# <- X'0000000000000000' for EOT ->
#
# ??? 0-3 Bytes to reach fullword boundary








Community email addresses:
  Post message: [hidden email]
  Subscribe:    [hidden email]
  Unsubscribe:  [hidden email]
  List owner:   [hidden email]

Files and archives at:
  http://groups.yahoo.com/group/hercules-390

Get the latest version of Hercules from:
  http://www.conmicro.cx/hercules 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/hercules-390/

<*> To unsubscribe from this group, send an email to:
    [hidden email]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply | Threaded
Open this post in threaded view
|

Re: A problem of "awsconvckd",

Peter Graves
mmh, start with "awsconvckd-v0.6.pl -h" to get help
and information on the syntax. With that knowledge
start the original awsconvckd with all the necessary
parameters.
Cut&paste the messages/errors into a mail and post it.
Then we'll see further ...

P.S. Version 0.7 is in the file area, vut is not very
far away from version 0.6

--- dengqiangang <[hidden email]> wrote:

>
> I met a big problem in recent work, Can you give a
> hand to me?
> anyway, I think it would not be a big problem for
> the friends in
> this group.
>
> my problem is when I try to run the perl program
> "awsconvckd-
> v0.6.pl", which is used to convert volumes in
> FLEX-ES to ckd in
> Hercules.But it can not run correctly. It seems that
> you have ever
> done the kind of job. So can you give me some
> direction?
>
> the symptoms is as following,
> As we know, we should assign a "newdasd" when we run
> the progarm. If
> there is not already a file "newdasd" there , eorror
> "can't update
> newdasd, No such file or directory" occured.
> If I create a blank file named "newdasd", another
> error "can't read
> hercules track 0" occured.
> If I paste a hercules volume(not blamk,about 300M
> byte)
> named "newdasd" there, another error "Track
> 213(14/3)@124324substr
> outside of string at awsconvckd??" occured.
>
> I am going crazy, what should I do?
> Following is the progarm I used.
>
>
> #!/usr/bin/perl
> # convert FLEX-ES DASD to AWSCKD DASD
> $version = "0.6";
> $numprm = @ARGV; # used for detecting empty command
> line
>
> require 'getopts.pl'; # module for reading command
> line
> parameters
> #require 'getopts';
> &Getopts('i:o:m:v:dhV');
>
> #
>
-------------------------------------------------------------------

> ------
>
> # Variables needed for hex conversion
>
> $h0="00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
> ";
> $h1="10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
> ";
> $h2="20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
> ";
> $h3="30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
> ";
> $h4="40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
> ";
> $h5="50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
> ";
> $h6="60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
> ";
> $h7="70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f
> ";
> $h8="80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f
> ";
> $h9="90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f
> ";
> $ha="a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af
> ";
> $hb="b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf
> ";
> $hc="c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf
> ";
> $hd="d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df
> ";
> $he="e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef
> ";
> $hf="f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff
> ";
>
>
$hex=$h0.$h1.$h2.$h3.$h4.$h5.$h6.$h7.$h8.$h9.$ha.$hb.$hc.$hd.$he.$hf;

>
> $e0="................";
> $e1="................";
> $e2="................";
> $e3="................";
> $e4=" ............(..";
> $e5=".............)..";
> $e6="................";
> $e7="................";
> $e8=".abcdefghi......";
> $e9=".jklmnopqr......";
> $ea=".?stuvwxyz......";
> $eb="................";
> $ec="?ABCDEFGHI......";
> $ed="?JKLMNOPQR......";
> $ee="?STUVWXYZ......";
> $ef="0123456789......";
>
>
$ebcdic=$e0.$e1.$e2.$e3.$e4.$e5.$e6.$e7.$e8.$e9.$ea.$eb.$ec.$ed.$ee.$

> ef;
>
> $a0=" ................";
> $a1="................";
> $a2=" ..#$%..()*+,-..";
> $a3="0123456789:;<=>?";
> $a4=".ABCDEFGHIJKLMNO";
> $a5="PQRSTUVWXYZ[.]._";
> $a6=".abcdefghijklmno";
> $a7="pqrstuvwxyz{.}..";
> $a8="................";
> $a9="................";
> $aa="................";
> $ab="................";
> $ac="................";
> $ad="................";
> $ae="................";
> $af="................";
>
>
$ascii=$a0.$a1.$a2.$a3.$a4.$a5.$a6.$a7.$a8.$a9.$aa.$ab.$ac.$ad.$ae.$a
> f;
>
> #
>
-------------------------------------------------------------------
> ------
> # Subroutines
> #
>
-------------------------------------------------------------------

> ------
>
> sub translate() { # take a decimal value $dez and
> return hex, EBCDIC and ASCII character
>    $pos = $dez * 3; # calculate position in
> hex table
>    $ohex = substr($hex, $pos, 3); # find ehx value
>    $oebc = substr($ebcdic,$dez,1); # find EBCDIC
> value
>    $oasc = substr($ascii,$dez,1); # find ASCII value
> };
>
> sub convert2hex($) { # convert the passed
> string into a new string with hex and EBCDIC  
>    my ($cin) = @_; # input string
>
>    $cout = ""; # reset outline
>    $chex = ""; # reset hex block
>    $cebc = ""; # reset EBCDIC block
>    $casc = ""; # reset ASCII block
>    $clen = length($cin);   # calculate length of
> input
> string
>    for ($i=0 ; $i<=$clen; $i++) { # loop through
> each 'character'
>       $bytec1 = substr($cin,$i,1); # fetch a byte
> ...
>       $byted1 = vec $bytec1,0,8; # determine decimal
> value
>       $dez = $byted1; #
>       translate(); # convert that one byte to hex,
>
> EBCDIC and ASCII
>       $chex = $chex.$ohex; # join hex line
>       $cebc = $cebc.$oebc; # join EBCDIC line
>       $casc = $casc.$oasc; # join ASCII line
>    };
>    $cout = $chex." (".$cebc.")"; # ok, that's it,
> give me hex +
> EBCDIC
>    return $cout; # return output line to caller
>
> };
>
> #
>
-------------------------------------------------------------------

> ------
> if ($opt_i eq "") { $opt_i = "olddasd"; }; # did we
> get an infile
> name? no, default to olddasd
> $ifile    = $opt_i; # transfer to
> ifile variable
>
> if ($opt_o eq "") { $opt_o = "newdasd"; }; # did we
> get an outfile
> name? no, default to newdasd
> $ofile  = $opt_o; # transfer to ofile
> variable
>
> if ($opt_m eq "") { $opt_m = "3390-3"; }; # did we
> get a DASD
> model? no, default to 3390-3
> $model  = $opt_m; # transfer to model
> variable
>
> if ($opt_v eq "") { $opt_v = "NEWDSK"; }; # did we
> get a volser?
>
=== message truncated ===



               
__________________________________
Discover Yahoo!
Use Yahoo! to plan a weekend, have fun online and more. Check it out!
http://discover.yahoo.com/


Community email addresses:
  Post message: [hidden email]
  Subscribe:    [hidden email]
  Unsubscribe:  [hidden email]
  List owner:   [hidden email]

Files and archives at:
  http://groups.yahoo.com/group/hercules-390

Get the latest version of Hercules from:
  http://www.conmicro.cx/hercules 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/hercules-390/

<*> To unsubscribe from this group, send an email to:
    [hidden email]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/