diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 13:14:38 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 13:14:38 +0300 |
commit | fae4762eba9ff7bb466a600130e9c90eaac6b0bc (patch) | |
tree | 62711fe7cd511824b5f8a90ba1ba7b523d42e127 /test/compare2.awk | |
parent | bc70de7b3302d5a81515b901cae376b8b51d2004 (diff) | |
download | egawk-fae4762eba9ff7bb466a600130e9c90eaac6b0bc.tar.gz egawk-fae4762eba9ff7bb466a600130e9c90eaac6b0bc.tar.bz2 egawk-fae4762eba9ff7bb466a600130e9c90eaac6b0bc.zip |
Move to gawk-3.1.1.
Diffstat (limited to 'test/compare2.awk')
-rw-r--r-- | test/compare2.awk | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/test/compare2.awk b/test/compare2.awk new file mode 100644 index 00000000..f2c2786e --- /dev/null +++ b/test/compare2.awk @@ -0,0 +1,165 @@ +# From beebe@math.utah.edu Thu Aug 2 15:35:07 2001 +# Received: from mail.actcom.co.il [192.114.47.13] +# by localhost with POP3 (fetchmail-5.7.4) +# for arnold@localhost (single-drop); Thu, 02 Aug 2001 15:35:07 +0300 (IDT) +# Received: by actcom.co.il (mbox arobbins) +# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Aug 2 16:02:36 2001) +# X-From_: beebe@sunshine.math.utah.edu Thu Aug 2 15:41:13 2001 +# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP +# (8.9.1a/actcom-0.2) id PAA01349 for <arobbins@actcom.co.il>; +# Thu, 2 Aug 2001 15:41:06 +0300 (EET DST) +# (rfc931-sender: mail.actcom.co.il [192.114.47.13]) +# Received: from billohost.com (www.billohost.com [209.196.35.10]) +# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f72Cf3I21032 +# for <arobbins@actcom.co.il>; Thu, 2 Aug 2001 15:41:05 +0300 +# Received: from fencepost.gnu.org (we-refuse-to-spy-on-our-users@fencepost.gnu.org [199.232.76.164]) +# by billohost.com (8.9.3/8.9.3) with ESMTP id IAA28585 +# for <arnold@skeeve.com>; Thu, 2 Aug 2001 08:34:38 -0400 +# Received: from sunshine.math.utah.edu ([128.110.198.2]) +# by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian)) +# id 15SHjG-00036x-00 +# for <arnold@gnu.org>; Thu, 02 Aug 2001 08:37:30 -0400 +# Received: from suncore.math.utah.edu (IDENT:GsUbUdUYCtFLRE4HvnnvhN4JsjooYcfR@suncore0.math.utah.edu [128.110.198.5]) +# by sunshine.math.utah.edu (8.9.3/8.9.3) with ESMTP id GAA00190; +# Thu, 2 Aug 2001 06:37:04 -0600 (MDT) +# Received: (from beebe@localhost) +# by suncore.math.utah.edu (8.9.3/8.9.3) id GAA20469; +# Thu, 2 Aug 2001 06:37:03 -0600 (MDT) +# Date: Thu, 2 Aug 2001 06:37:03 -0600 (MDT) +# From: "Nelson H. F. Beebe" <beebe@math.utah.edu> +# To: arnold@gnu.org +# Cc: beebe@math.utah.edu +# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 322 +# INSCC, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT +# 84112-0090, USA" +# X-Telephone: +1 801 581 5254 +# X-FAX: +1 801 585 1640, +1 801 581 4148 +# X-URL: http://www.math.utah.edu/~beebe +# Subject: awk implementations: a bug, or new dark corner? +# Message-ID: <CMM.0.92.0.996755823.beebe@suncore.math.utah.edu> +# Status: RO +# +# Consider the following program: +# +# % cat bug.awk +BEGIN { + split("00/00/00",mdy,"/") + if ((mdy[1] == 0) && (mdy[2] == 0) && (mdy[3] == 0)) + { + print "OK: zero strings compare equal to number zero" + exit(0) + } + else + { + print "ERROR: zero strings compare unequal to number zero" + exit(1) + } +} +# +# Here are the awk implementation versions (on Sun Solaris 2.7): +# +# % awk -V +# awk version 19990416 +# +# % mawk -W version +# mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan +# +# % nawk -V +# awk version 20001115 +# +# % gawk --version +# GNU Awk 3.1.10 +# ... +# +# Here's what they say about the test program: +# +# foreach f (awk mawk nawk gawk gawk-*) +# echo ======== $f +# $f -f ~/bug.awk +# end +# +# ======== awk +# OK: zero strings compare equal to number zero +# ======== mawk +# OK: zero strings compare equal to number zero +# ======== nawk +# OK: zero strings compare equal to number zero +# ======== gawk +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.0 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.1 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.3 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.4 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.5 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.6 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.60 +# OK: zero strings compare equal to number zero +# ======== gawk-3.0.90 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.91 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.92 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.93 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.94 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.95 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.96 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.0.97 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.1.0 +# ERROR: zero strings compare unequal to number zero +# ======== gawk-3.1.10 +# ERROR: zero strings compare unequal to number zero +# +# Identical results were obtained on Apple Rhapsody, Apple Darwin, +# Compaq/DEC Alpha OSF/1, Intel x86 GNU/Linux, SGI IRIX 6.5, DEC Alpha +# GNU/Linux, and Sun SPARC GNU/Linux, so it definitely is not a C +# compiler problem. +# +# However, the gray awk book, p. 44, says: +# +# In a comparison expression like: +# x == y +# if both operands have a numeric type, the comparison is numeric; +# otherwise, any numeric operand is converted to a string and the +# comparison is made on the string values. +# +# and the new green gawk book, p. 95, says: +# +# When comparing operands of mixed types, numeric operands are +# converted to strings using the value of `CONVFMT' +# +# This suggests that the OK response in bug.awk is wrong, and the ERROR +# response is correct. Only recent gawk releases do the right thing, +# and it is awk, mawk, and nawk that have a bug. +# +# If I change the test program from "00/00/00" to "0/0/0", all versions +# tested produce the OK response. +# +# Comments? +# +# After reading the two book excerpts, I changed my code to read +# +# if (((0 + mdy[1]) == 0) && ((0 + mdy[2]) == 0) && ((0 + mdy[3]) == 0)) +# +# and output from all implementations now agrees. +# +# ------------------------------------------------------------------------------- +# - Nelson H. F. Beebe Tel: +1 801 581 5254 - +# - Center for Scientific Computing FAX: +1 801 585 1640, +1 801 581 4148 - +# - University of Utah Internet e-mail: beebe@math.utah.edu - +# - Department of Mathematics, 322 INSCC beebe@acm.org beebe@computer.org - +# - 155 S 1400 E RM 233 beebe@ieee.org - +# - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe - +# ------------------------------------------------------------------------------- +# |