"Fossies" - the Fresh Open Source Software Archive

Member "perl-5.32.1/README.bs2000" (18 Dec 2020, 7994 Bytes) of package /linux/misc/perl-5.32.1.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 This document is written in pod format hence there are punctuation
    2 characters in odd places.  Do not worry, you've apparently got the
    3 ASCII->EBCDIC translation worked out correctly.  You can read more
    4 about pod in pod/perlpod.pod or the short summary in the INSTALL file.
    5 
    6 =head1 NAME
    7 
    8 perlbs2000 - building and installing Perl for BS2000.
    9 
   10 B<This document needs to be updated, but we don't know what it should say.
   11 Please submit comments to L<https://github.com/Perl/perl5/issues>.>
   12 
   13 =head1 SYNOPSIS
   14 
   15 This document will help you Configure, build, test and install Perl
   16 on BS2000 in the POSIX subsystem.
   17 
   18 =head1 DESCRIPTION
   19 
   20 This is a ported perl for the POSIX subsystem in BS2000 VERSION OSD
   21 V3.1A or later.  It may work on other versions, but we started porting
   22 and testing it with 3.1A and are currently using Version V4.0A.
   23 
   24 You may need the following GNU programs in order to install perl:
   25 
   26 =head2 gzip on BS2000
   27 
   28 We used version 1.2.4, which could be installed out of the box with
   29 one failure during 'make check'.
   30 
   31 =head2 bison on BS2000
   32 
   33 The yacc coming with BS2000 POSIX didn't work for us.  So we had to
   34 use bison.  We had to make a few changes to perl in order to use the
   35 pure (reentrant) parser of bison.  We used version 1.25, but we had to
   36 add a few changes due to EBCDIC.  See below for more details
   37 concerning yacc.
   38 
   39 =head2 Unpacking Perl Distribution on BS2000
   40 
   41 To extract an ASCII tar archive on BS2000 POSIX you need an ASCII
   42 filesystem (we used the mountpoint /usr/local/ascii for this).  Now
   43 you extract the archive in the ASCII filesystem without
   44 I/O-conversion:
   45 
   46 cd /usr/local/ascii
   47 export IO_CONVERSION=NO
   48 gunzip < /usr/local/src/perl.tar.gz | pax -r
   49 
   50 You may ignore the error message for the first element of the archive
   51 (this doesn't look like a tar archive / skipping to next file...),
   52 it's only the directory which will be created automatically anyway.
   53 
   54 After extracting the archive you copy the whole directory tree to your
   55 EBCDIC filesystem.  B<This time you use I/O-conversion>:
   56 
   57 cd /usr/local/src
   58 IO_CONVERSION=YES
   59 cp -r /usr/local/ascii/perl5.005_02 ./
   60 
   61 =head2 Compiling Perl on BS2000
   62 
   63 There is a "hints" file for BS2000 called hints.posix-bc (because
   64 posix-bc is the OS name given by `uname`) that specifies the correct
   65 values for most things.  The major problem is (of course) the EBCDIC
   66 character set.  We have german EBCDIC version.
   67 
   68 Because of our problems with the native yacc we used GNU bison to
   69 generate a pure (=reentrant) parser for perly.y.  So our yacc is
   70 really the following script:
   71 
   72 -----8<-----/usr/local/bin/yacc-----8<-----
   73 #! /usr/bin/sh
   74 
   75 # Bison as a reentrant yacc:
   76 
   77 # save parameters:
   78 params=""
   79 while [[ $# -gt 1 ]]; do
   80     params="$params $1"
   81     shift
   82 done
   83 
   84 # add flag %pure_parser:
   85 
   86 tmpfile=/tmp/bison.$$.y
   87 echo %pure_parser > $tmpfile
   88 cat $1 >> $tmpfile
   89 
   90 # call bison:
   91 
   92 echo "/usr/local/bin/bison --yacc $params $1\t\t\t(Pure Parser)"
   93 /usr/local/bin/bison --yacc $params $tmpfile
   94 
   95 # cleanup:
   96 
   97 rm -f $tmpfile
   98 -----8<----------8<-----
   99 
  100 We still use the normal yacc for a2p.y though!!!  We made a softlink
  101 called byacc to distinguish between the two versions:
  102 
  103 ln -s /usr/bin/yacc /usr/local/bin/byacc
  104 
  105 We build perl using GNU make.  We tried the native make once and it
  106 worked too.
  107 
  108 =head2 Testing Perl on BS2000
  109 
  110 We still got a few errors during C<make test>.  Some of them are the
  111 result of using bison.  Bison prints I<parser error> instead of I<syntax
  112 error>, so we may ignore them.  The following list shows
  113 our errors, your results may differ:
  114 
  115 op/numconvert.......FAILED tests 1409-1440
  116 op/regexp...........FAILED tests 483, 496
  117 op/regexp_noamp.....FAILED tests 483, 496
  118 pragma/overload.....FAILED tests 152-153, 170-171
  119 pragma/warnings.....FAILED tests 14, 82, 129, 155, 192, 205, 207
  120 lib/bigfloat........FAILED tests 351-352, 355
  121 lib/bigfltpm........FAILED tests 354-355, 358
  122 lib/complex.........FAILED tests 267, 487
  123 lib/dumper..........FAILED tests 43, 45
  124 Failed 11/231 test scripts, 95.24% okay. 57/10595 subtests failed, 99.46% okay.
  125 
  126 =head2 Installing Perl on BS2000
  127 
  128 We have no nroff on BS2000 POSIX (yet), so we ignored any errors while
  129 installing the documentation.
  130 
  131 
  132 =head2 Using Perl in the Posix-Shell of BS2000
  133 
  134 BS2000 POSIX doesn't support the shebang notation
  135 (C<#!/usr/local/bin/perl>), so you have to use the following lines
  136 instead:
  137 
  138 : # use perl
  139     eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
  140         if $running_under_some_shell;
  141 
  142 =head2 Using Perl in "native" BS2000
  143 
  144 We don't have much experience with this yet, but try the following:
  145 
  146 Copy your Perl executable to a BS2000 LLM using bs2cp:
  147 
  148 C<bs2cp /usr/local/bin/perl 'bs2:perl(perl,l)'>
  149 
  150 Now you can start it with the following (SDF) command:
  151 
  152 C</START-PROG FROM-FILE=*MODULE(PERL,PERL),PROG-MODE=*ANY,RUN-MODE=*ADV>
  153 
  154 First you get the BS2000 commandline prompt ('*').  Here you may enter
  155 your parameters, e.g. C<-e 'print "Hello World!\\n";'> (note the
  156 double backslash!) or C<-w> and the name of your Perl script.
  157 Filenames starting with C</> are searched in the Posix filesystem,
  158 others are searched in the BS2000 filesystem.  You may even use
  159 wildcards if you put a C<%> in front of your filename (e.g. C<-w
  160 checkfiles.pl %*.c>).  Read your C/C++ manual for additional
  161 possibilities of the commandline prompt (look for
  162 PARAMETER-PROMPTING).
  163 
  164 =head2 Floating point anomalies on BS2000
  165 
  166 There appears to be a bug in the floating point implementation on BS2000 POSIX
  167 systems such that calling int() on the product of a number and a small
  168 magnitude number is not the same as calling int() on the quotient of
  169 that number and a large magnitude number.  For example, in the following
  170 Perl code:
  171 
  172     my $x = 100000.0;
  173     my $y = int($x * 1e-5) * 1e5; # '0'
  174     my $z = int($x / 1e+5) * 1e5;  # '100000'
  175     print "\$y is $y and \$z is $z\n"; # $y is 0 and $z is 100000
  176 
  177 Although one would expect the quantities $y and $z to be the same and equal
  178 to 100000 they will differ and instead will be 0 and 100000 respectively.
  179 
  180 =head2 Using PerlIO and different encodings on ASCII and EBCDIC partitions
  181 
  182 Since version 5.8 Perl uses the new PerlIO on BS2000.  This enables
  183 you using different encodings per IO channel.  For example you may use
  184 
  185     use Encode;
  186     open($f, ">:encoding(ascii)", "test.ascii");
  187     print $f "Hello World!\n";
  188     open($f, ">:encoding(posix-bc)", "test.ebcdic");
  189     print $f "Hello World!\n";
  190     open($f, ">:encoding(latin1)", "test.latin1");
  191     print $f "Hello World!\n";
  192     open($f, ">:encoding(utf8)", "test.utf8");
  193     print $f "Hello World!\n";
  194 
  195 to get two files containing "Hello World!\n" in ASCII, EBCDIC, ISO
  196 Latin-1 (in this example identical to ASCII) respective UTF-EBCDIC (in
  197 this example identical to normal EBCDIC).  See the documentation of
  198 Encode::PerlIO for details.
  199 
  200 As the PerlIO layer uses raw IO internally, all this totally ignores
  201 the type of your filesystem (ASCII or EBCDIC) and the IO_CONVERSION
  202 environment variable.  If you want to get the old behavior, that the
  203 BS2000 IO functions determine conversion depending on the filesystem
  204 PerlIO still is your friend.  You use IO_CONVERSION as usual and tell
  205 Perl, that it should use the native IO layer:
  206 
  207     export IO_CONVERSION=YES
  208     export PERLIO=stdio
  209 
  210 Now your IO would be ASCII on ASCII partitions and EBCDIC on EBCDIC
  211 partitions.  See the documentation of PerlIO (without C<Encode::>!)
  212 for further possibilities.
  213 
  214 =head1 AUTHORS
  215 
  216 Thomas Dorner
  217 
  218 =head1 SEE ALSO
  219 
  220 L<INSTALL>, L<perlport>.
  221 
  222 =head2 Mailing list
  223 
  224 If you are interested in the z/OS (formerly known as OS/390)
  225 and POSIX-BC (BS2000) ports of Perl then see the perl-mvs mailing list.
  226 To subscribe, send an empty message to perl-mvs-subscribe@perl.org.
  227 
  228 See also:
  229 
  230     https://lists.perl.org/list/perl-mvs.html
  231 
  232 There are web archives of the mailing list at:
  233 
  234     https://www.nntp.perl.org/group/perl.mvs/
  235 
  236 =head1 HISTORY
  237 
  238 This document was originally written by Thomas Dorner for the 5.005
  239 release of Perl.
  240 
  241 This document was podified for the 5.6 release of perl 11 July 2000.
  242 
  243 =cut