source: trunk/essentials/sys-apps/gawk/test/compare2.awk

Last change on this file was 3076, checked in by bird, 18 years ago

gawk 3.1.5

File size: 6.2 KB
Line 
1# From beebe@math.utah.edu Thu Aug 2 15:35:07 2001
2# Received: from mail.actcom.co.il [192.114.47.13]
3# by localhost with POP3 (fetchmail-5.7.4)
4# for arnold@localhost (single-drop); Thu, 02 Aug 2001 15:35:07 +0300 (IDT)
5# Received: by actcom.co.il (mbox arobbins)
6# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Aug 2 16:02:36 2001)
7# X-From_: beebe@sunshine.math.utah.edu Thu Aug 2 15:41:13 2001
8# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
9# (8.9.1a/actcom-0.2) id PAA01349 for <arobbins@actcom.co.il>;
10# Thu, 2 Aug 2001 15:41:06 +0300 (EET DST)
11# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
12# Received: from billohost.com (www.billohost.com [209.196.35.10])
13# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f72Cf3I21032
14# for <arobbins@actcom.co.il>; Thu, 2 Aug 2001 15:41:05 +0300
15# Received: from fencepost.gnu.org (we-refuse-to-spy-on-our-users@fencepost.gnu.org [199.232.76.164])
16# by billohost.com (8.9.3/8.9.3) with ESMTP id IAA28585
17# for <arnold@skeeve.com>; Thu, 2 Aug 2001 08:34:38 -0400
18# Received: from sunshine.math.utah.edu ([128.110.198.2])
19# by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian))
20# id 15SHjG-00036x-00
21# for <arnold@gnu.org>; Thu, 02 Aug 2001 08:37:30 -0400
22# Received: from suncore.math.utah.edu (IDENT:GsUbUdUYCtFLRE4HvnnvhN4JsjooYcfR@suncore0.math.utah.edu [128.110.198.5])
23# by sunshine.math.utah.edu (8.9.3/8.9.3) with ESMTP id GAA00190;
24# Thu, 2 Aug 2001 06:37:04 -0600 (MDT)
25# Received: (from beebe@localhost)
26# by suncore.math.utah.edu (8.9.3/8.9.3) id GAA20469;
27# Thu, 2 Aug 2001 06:37:03 -0600 (MDT)
28# Date: Thu, 2 Aug 2001 06:37:03 -0600 (MDT)
29# From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
30# To: arnold@gnu.org
31# Cc: beebe@math.utah.edu
32# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 322
33# INSCC, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT
34# 84112-0090, USA"
35# X-Telephone: +1 801 581 5254
36# X-FAX: +1 801 585 1640, +1 801 581 4148
37# X-URL: http://www.math.utah.edu/~beebe
38# Subject: awk implementations: a bug, or new dark corner?
39# Message-ID: <CMM.0.92.0.996755823.beebe@suncore.math.utah.edu>
40# Status: RO
41#
42# Consider the following program:
43#
44# % cat bug.awk
45BEGIN {
46 split("00/00/00",mdy,"/")
47 if ((mdy[1] == 0) && (mdy[2] == 0) && (mdy[3] == 0))
48 {
49 print "OK: zero strings compare equal to number zero"
50 exit(0)
51 }
52 else
53 {
54 print "ERROR: zero strings compare unequal to number zero"
55 exit(1)
56 }
57}
58#
59# Here are the awk implementation versions (on Sun Solaris 2.7):
60#
61# % awk -V
62# awk version 19990416
63#
64# % mawk -W version
65# mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
66#
67# % nawk -V
68# awk version 20001115
69#
70# % gawk --version
71# GNU Awk 3.1.10
72# ...
73#
74# Here's what they say about the test program:
75#
76# foreach f (awk mawk nawk gawk gawk-*)
77# echo ======== $f
78# $f -f ~/bug.awk
79# end
80#
81# ======== awk
82# OK: zero strings compare equal to number zero
83# ======== mawk
84# OK: zero strings compare equal to number zero
85# ======== nawk
86# OK: zero strings compare equal to number zero
87# ======== gawk
88# ERROR: zero strings compare unequal to number zero
89# ======== gawk-3.0.0
90# OK: zero strings compare equal to number zero
91# ======== gawk-3.0.1
92# OK: zero strings compare equal to number zero
93# ======== gawk-3.0.3
94# OK: zero strings compare equal to number zero
95# ======== gawk-3.0.4
96# OK: zero strings compare equal to number zero
97# ======== gawk-3.0.5
98# OK: zero strings compare equal to number zero
99# ======== gawk-3.0.6
100# OK: zero strings compare equal to number zero
101# ======== gawk-3.0.60
102# OK: zero strings compare equal to number zero
103# ======== gawk-3.0.90
104# ERROR: zero strings compare unequal to number zero
105# ======== gawk-3.0.91
106# ERROR: zero strings compare unequal to number zero
107# ======== gawk-3.0.92
108# ERROR: zero strings compare unequal to number zero
109# ======== gawk-3.0.93
110# ERROR: zero strings compare unequal to number zero
111# ======== gawk-3.0.94
112# ERROR: zero strings compare unequal to number zero
113# ======== gawk-3.0.95
114# ERROR: zero strings compare unequal to number zero
115# ======== gawk-3.0.96
116# ERROR: zero strings compare unequal to number zero
117# ======== gawk-3.0.97
118# ERROR: zero strings compare unequal to number zero
119# ======== gawk-3.1.0
120# ERROR: zero strings compare unequal to number zero
121# ======== gawk-3.1.10
122# ERROR: zero strings compare unequal to number zero
123#
124# Identical results were obtained on Apple Rhapsody, Apple Darwin,
125# Compaq/DEC Alpha OSF/1, Intel x86 GNU/Linux, SGI IRIX 6.5, DEC Alpha
126# GNU/Linux, and Sun SPARC GNU/Linux, so it definitely is not a C
127# compiler problem.
128#
129# However, the gray awk book, p. 44, says:
130#
131# In a comparison expression like:
132# x == y
133# if both operands have a numeric type, the comparison is numeric;
134# otherwise, any numeric operand is converted to a string and the
135# comparison is made on the string values.
136#
137# and the new green gawk book, p. 95, says:
138#
139# When comparing operands of mixed types, numeric operands are
140# converted to strings using the value of `CONVFMT'
141#
142# This suggests that the OK response in bug.awk is wrong, and the ERROR
143# response is correct. Only recent gawk releases do the right thing,
144# and it is awk, mawk, and nawk that have a bug.
145#
146# If I change the test program from "00/00/00" to "0/0/0", all versions
147# tested produce the OK response.
148#
149# Comments?
150#
151# After reading the two book excerpts, I changed my code to read
152#
153# if (((0 + mdy[1]) == 0) && ((0 + mdy[2]) == 0) && ((0 + mdy[3]) == 0))
154#
155# and output from all implementations now agrees.
156#
157# -------------------------------------------------------------------------------
158# - Nelson H. F. Beebe Tel: +1 801 581 5254 -
159# - Center for Scientific Computing FAX: +1 801 585 1640, +1 801 581 4148 -
160# - University of Utah Internet e-mail: beebe@math.utah.edu -
161# - Department of Mathematics, 322 INSCC beebe@acm.org beebe@computer.org -
162# - 155 S 1400 E RM 233 beebe@ieee.org -
163# - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe -
164# -------------------------------------------------------------------------------
165#
Note: See TracBrowser for help on using the repository browser.