version 1, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
PERLBS2000 |
|
|
2 |
!!!PERLBS2000 |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
AUTHORS |
|
|
7 |
SEE ALSO |
|
|
8 |
HISTORY |
|
|
9 |
---- |
|
|
10 |
!!NAME |
|
|
11 |
|
|
|
12 |
|
|
|
13 |
README .BS2000 - building and installing Perl for BS2000 . |
|
|
14 |
!!SYNOPSIS |
|
|
15 |
|
|
|
16 |
|
|
|
17 |
This document will help you Configure, build, test and |
|
|
18 |
install Perl on BS2000 in the POSIX |
|
|
19 |
subsystem. |
|
|
20 |
!!DESCRIPTION |
|
|
21 |
|
|
|
22 |
|
|
|
23 |
This is a ported perl for the POSIX |
|
|
24 |
subsystem in BS2000 VERSION OSD V3.1A or |
|
|
25 |
later. It may work on other versions, but we started porting |
|
|
26 |
and testing it with 3.1A and are currently using Version |
|
|
27 |
V4.0A. |
|
|
28 |
|
|
|
29 |
|
|
|
30 |
You may need the following GNU programs in |
|
|
31 |
order to install perl: |
|
|
32 |
|
|
|
33 |
|
|
|
34 |
__gzip__ |
|
|
35 |
|
|
|
36 |
|
|
|
37 |
We used version 1.2.4, which could be installed out of |
|
|
38 |
the box with one failure during 'make |
|
|
39 |
check'. |
|
|
40 |
|
|
|
41 |
|
|
|
42 |
__bison__ |
|
|
43 |
|
|
|
44 |
|
|
|
45 |
The yacc coming with BS2000 POSIX didn't |
|
|
46 |
work for us. So we had to use bison. We had to make a few |
|
|
47 |
changes to perl in order to use the pure (reentrant) parser |
|
|
48 |
of bison. We used version 1.25, but we had to add a few |
|
|
49 |
changes due to EBCDIC . See below for more |
|
|
50 |
details concerning yacc. |
|
|
51 |
|
|
|
52 |
|
|
|
53 |
__Unpacking__ |
|
|
54 |
|
|
|
55 |
|
|
|
56 |
To extract an ASCII tar archive on |
|
|
57 |
BS2000 POSIX you need an ASCII filesystem |
|
|
58 |
(we used the mountpoint /usr/local/ascii for this). Now you |
|
|
59 |
extract the archive in the ASCII filesystem |
|
|
60 |
without I/O-conversion: |
|
|
61 |
|
|
|
62 |
|
|
|
63 |
cd /usr/local/ascii export IO_CONVERSION=NO gunzip |
|
|
64 |
|
|
|
65 |
|
|
|
66 |
You may ignore the error message for the first element |
|
|
67 |
of the archive (this doesn't look like a tar archive / |
|
|
68 |
skipping to next file...), it's only the directory which |
|
|
69 |
will be created automatically anyway. |
|
|
70 |
|
|
|
71 |
|
|
|
72 |
After extracting the archive you copy the whole |
|
|
73 |
directory tree to your EBCDIC filesystem. __This |
|
|
74 |
time you use I/O-conversion__: |
|
|
75 |
|
|
|
76 |
|
|
|
77 |
cd /usr/local/src IO_CONVERSION=YES cp -r |
|
|
78 |
/usr/local/ascii/perl5.005_02 ./ |
|
|
79 |
|
|
|
80 |
|
|
|
81 |
__Compiling__ |
|
|
82 |
|
|
|
83 |
|
|
|
84 |
There is a ``hints'' file for BS2000 called |
|
|
85 |
hints.posix-bc (because posix-bc is the OS name |
|
|
86 |
given by `uname`) that specifies the correct values for most |
|
|
87 |
things. The major problem is (of course) the EBCDIC |
|
|
88 |
character set. We have german EBCDIC |
|
|
89 |
version. |
|
|
90 |
|
|
|
91 |
|
|
|
92 |
Because of our problems with the native yacc we |
|
|
93 |
used GNU bison to generate a pure (=reentrant) |
|
|
94 |
parser for perly.y. So our yacc is really the following |
|
|
95 |
script: |
|
|
96 |
|
|
|
97 |
|
|
|
98 |
-----8 |
|
|
99 |
|
|
|
100 |
|
|
|
101 |
# Bison as a reentrant yacc: |
|
|
102 |
|
|
|
103 |
|
|
|
104 |
# save parameters: params= |
|
|
105 |
$1 |
|
|
106 |
|
|
|
107 |
|
|
|
108 |
# add flag %pure_parser: |
|
|
109 |
|
|
|
110 |
|
|
|
111 |
tmpfile=/tmp/bison.$$.y echo %pure_parser |
|
|
112 |
$tmpfile cat $1 |
|
|
113 |
$tmpfile |
|
|
114 |
|
|
|
115 |
|
|
|
116 |
# call bison: |
|
|
117 |
|
|
|
118 |
|
|
|
119 |
echo ``/usr/local/bin/bison --yacc $params |
|
|
120 |
$1ttt(Pure Parser)'' /usr/local/bin/bison --yacc |
|
|
121 |
$params $tmpfile |
|
|
122 |
|
|
|
123 |
|
|
|
124 |
# cleanup: |
|
|
125 |
|
|
|
126 |
|
|
|
127 |
rm -f $tmpfile |
|
|
128 |
-----8 |
|
|
129 |
|
|
|
130 |
|
|
|
131 |
We still use the normal yacc for a2p.y though!!! We |
|
|
132 |
made a softlink called byacc to distinguish between the two |
|
|
133 |
versions: |
|
|
134 |
|
|
|
135 |
|
|
|
136 |
ln -s /usr/bin/yacc |
|
|
137 |
/usr/local/bin/byacc |
|
|
138 |
|
|
|
139 |
|
|
|
140 |
We build perl using GNU make. We tried the |
|
|
141 |
native make once and it worked too. |
|
|
142 |
|
|
|
143 |
|
|
|
144 |
__Testing__ |
|
|
145 |
|
|
|
146 |
|
|
|
147 |
We still got a few errors during make test. |
|
|
148 |
Some of them are the result of using bison. Bison prints |
|
|
149 |
''parser error'' instead of ''syntax error'', so we |
|
|
150 |
may ignore them. The following list shows our errors, your |
|
|
151 |
results may differ: |
|
|
152 |
|
|
|
153 |
|
|
|
154 |
op/numconvert.......FAILED tests 1409-1440 |
|
|
155 |
op/regexp...........FAILED tests 483, 496 |
|
|
156 |
op/regexp_noamp.....FAILED tests 483, 496 |
|
|
157 |
pragma/overload.....FAILED tests 152-153, 170-171 |
|
|
158 |
pragma/warnings.....FAILED tests 14, 82, 129, 155, 192, 205, |
|
|
159 |
207 lib/bigfloat........FAILED tests 351-352, 355 |
|
|
160 |
lib/bigfltpm........FAILED tests 354-355, 358 |
|
|
161 |
lib/complex.........FAILED tests 267, 487 |
|
|
162 |
lib/dumper..........FAILED tests 43, 45 Failed 11/231 test |
|
|
163 |
scripts, 95.24% okay. 57/10595 subtests failed, 99.46% |
|
|
164 |
okay. |
|
|
165 |
|
|
|
166 |
|
|
|
167 |
__Install__ |
|
|
168 |
|
|
|
169 |
|
|
|
170 |
We have no nroff on BS2000 POSIX (yet), so |
|
|
171 |
we ignored any errors while installing the |
|
|
172 |
documentation. |
|
|
173 |
|
|
|
174 |
|
|
|
175 |
__Using Perl in the Posix-Shell__ |
|
|
176 |
|
|
|
177 |
|
|
|
178 |
BS2000 POSIX doesn't support the shebang notation |
|
|
179 |
(#!/usr/local/bin/perl), so you have to use the |
|
|
180 |
following lines instead: |
|
|
181 |
|
|
|
182 |
|
|
|
183 |
: # use perl eval 'exec /usr/local/bin/perl -S |
|
|
184 |
$0 ${1+``$@''}' if |
|
|
185 |
$running_under_some_shell; |
|
|
186 |
|
|
|
187 |
|
|
|
188 |
__Using Perl in ``native''__ |
|
|
189 |
__BS2000__ |
|
|
190 |
|
|
|
191 |
|
|
|
192 |
We don't have much experience with this yet, but try |
|
|
193 |
the following: |
|
|
194 |
|
|
|
195 |
|
|
|
196 |
Copy your Perl executable to a BS2000 LLM |
|
|
197 |
using bs2cp: |
|
|
198 |
|
|
|
199 |
|
|
|
200 |
bs2cp /usr/local/bin/perl |
|
|
201 |
'bs2:perl(perl,l)' |
|
|
202 |
|
|
|
203 |
|
|
|
204 |
Now you can start it with the following ( SDF |
|
|
205 |
) command: |
|
|
206 |
|
|
|
207 |
|
|
|
208 |
/START-PROG |
|
|
209 |
FROM-FILE=*MODULE(PERL,PERL),PROG-MODE=*ANY,RUN-MODE=*ADV |
|
|
210 |
|
|
|
211 |
|
|
|
212 |
First you get the BS2000 commandline prompt |
|
|
213 |
('*'). Here you may enter your parameters, e.g. -e |
|
|
214 |
'print (note the double |
|
|
215 |
backslash!) or -w and the name of your Perl script. |
|
|
216 |
Filenames starting with / are searched in in the |
|
|
217 |
Posix filesystem, others are searched in the BS2000 |
|
|
218 |
filesystem. You may even use wildcards if you put a |
|
|
219 |
% in front of your filename (e.g. -w |
|
|
220 |
checkfiles.pl %*.c). Read your C/C ++ manual |
|
|
221 |
for additional possibilities of the commandline prompt (look |
|
|
222 |
for PARAMETER-PROMPTING ). |
|
|
223 |
|
|
|
224 |
|
|
|
225 |
__Floating point anomalies__ |
|
|
226 |
|
|
|
227 |
|
|
|
228 |
There appears to be a bug in the floating point |
|
|
229 |
implementation on BS2000 POSIX systems such that |
|
|
230 |
calling ''int()'' on the product of a number and a small |
|
|
231 |
magnitude number is not the same as calling ''int()'' on |
|
|
232 |
the quotient of that number and a large magnitude number. |
|
|
233 |
For example, in the following Perl code: |
|
|
234 |
|
|
|
235 |
|
|
|
236 |
my $x = 100000.0; |
|
|
237 |
my $y = int($x * 1e-5) * 1e5; # '0' |
|
|
238 |
my $z = int($x / 1e+5) * 1e5; # '100000' |
|
|
239 |
print |
|
|
240 |
Although one would expect the quantities $y and $z to be the same and equal to 100000 they will differ and instead will be 0 and 100000 respectively. |
|
|
241 |
!!AUTHORS |
|
|
242 |
|
|
|
243 |
|
|
|
244 |
Thomas Dorner |
|
|
245 |
!!SEE ALSO |
|
|
246 |
|
|
|
247 |
|
|
|
248 |
INSTALL , perlport. |
|
|
249 |
|
|
|
250 |
|
|
|
251 |
__Mailing list__ |
|
|
252 |
|
|
|
253 |
|
|
|
254 |
The Perl Institute (http://www.perl.org/) maintains a |
|
|
255 |
perl-mvs mailing list of interest to all folks building |
|
|
256 |
and/or using perl on EBCDIC platforms. To |
|
|
257 |
subscribe, send a message of: |
|
|
258 |
|
|
|
259 |
|
|
|
260 |
subscribe perl-mvs |
|
|
261 |
to majordomo@perl.org. |
|
|
262 |
!!HISTORY |
|
|
263 |
|
|
|
264 |
|
|
|
265 |
This document was originally written by Thomas Dorner |
|
|
266 |
for the 5.005 release of Perl. |
|
|
267 |
|
|
|
268 |
|
|
|
269 |
This document was podified for the 5.6 release of perl |
|
|
270 |
11 July 2000. |
|
|
271 |
---- |