diff options
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlbs2000.1')
-rw-r--r-- | upstream/mageia-cauldron/man1/perlbs2000.1 | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perlbs2000.1 b/upstream/mageia-cauldron/man1/perlbs2000.1 new file mode 100644 index 00000000..894f4937 --- /dev/null +++ b/upstream/mageia-cauldron/man1/perlbs2000.1 @@ -0,0 +1,290 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "PERLBS2000 1" +.TH PERLBS2000 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +perlbs2000 \- building and installing Perl for BS2000. +.PP +This document needs to be updated, but we don't know what it should say. +Please submit comments to <https://github.com/Perl/perl5/issues>. +.SH SYNOPSIS +.IX Header "SYNOPSIS" +This document will help you Configure, build, test and install Perl +on BS2000 in the POSIX subsystem. +.SH DESCRIPTION +.IX Header "DESCRIPTION" +This is a ported perl for the POSIX subsystem in BS2000 VERSION OSD +V3.1A or later. It may work on other versions, but we started porting +and testing it with 3.1A and are currently using Version V4.0A. +.PP +You may need the following GNU programs in order to install perl: +.SS "gzip on BS2000" +.IX Subsection "gzip on BS2000" +We used version 1.2.4, which could be installed out of the box with +one failure during 'make check'. +.SS "bison on BS2000" +.IX Subsection "bison on BS2000" +The yacc coming with BS2000 POSIX didn't work for us. So we had to +use bison. We had to make a few changes to perl in order to use the +pure (reentrant) parser of bison. We used version 1.25, but we had to +add a few changes due to EBCDIC. See below for more details +concerning yacc. +.SS "Unpacking Perl Distribution on BS2000" +.IX Subsection "Unpacking Perl Distribution on BS2000" +To extract an ASCII tar archive on BS2000 POSIX you need an ASCII +filesystem (we used the mountpoint /usr/local/ascii for this). Now +you extract the archive in the ASCII filesystem without +I/O\-conversion: +.PP +cd /usr/local/ascii +export IO_CONVERSION=NO +gunzip < /usr/local/src/perl.tar.gz | pax \-r +.PP +You may ignore the error message for the first element of the archive +(this doesn't look like a tar archive / skipping to next file...), +it's only the directory which will be created automatically anyway. +.PP +After extracting the archive you copy the whole directory tree to your +EBCDIC filesystem. \fBThis time you use I/O\-conversion\fR: +.PP +cd /usr/local/src +IO_CONVERSION=YES +cp \-r /usr/local/ascii/perl5.005_02 ./ +.SS "Compiling Perl on BS2000" +.IX Subsection "Compiling Perl on BS2000" +There is a "hints" file for BS2000 called hints.posix\-bc (because +posix-bc is the OS name given by `uname`) that specifies the correct +values for most things. The major problem is (of course) the EBCDIC +character set. We have german EBCDIC version. +.PP +Because of our problems with the native yacc we used GNU bison to +generate a pure (=reentrant) parser for perly.y. So our yacc is +really the following script: +.PP +\&\-\-\-\-\-8<\-\-\-\-\-/usr/local/bin/yacc\-\-\-\-\-8<\-\-\-\-\- +#! /usr/bin/sh +.PP +# Bison as a reentrant yacc: +.PP +# save parameters: +params="" +while [[ $# \-gt 1 ]]; do + params="$params \f(CW$1\fR" + shift +done +.PP +# add flag \f(CW%pure_parser:\fR +.PP +tmpfile=/tmp/bison.$$.y +echo \f(CW%pure_parser\fR > \f(CW$tmpfile\fR +cat \f(CW$1\fR >> \f(CW$tmpfile\fR +.PP +# call bison: +.PP +echo "/usr/local/bin/bison \-\-yacc \f(CW$params\fR \f(CW$1\fR\et\et\et(Pure Parser)" +/usr/local/bin/bison \-\-yacc \f(CW$params\fR \f(CW$tmpfile\fR +.PP +# cleanup: +.PP +rm \-f \f(CW$tmpfile\fR +\&\-\-\-\-\-8<\-\-\-\-\-\-\-\-\-\-8<\-\-\-\-\- +.PP +We still use the normal yacc for a2p.y though!!! We made a softlink +called byacc to distinguish between the two versions: +.PP +ln \-s /usr/bin/yacc /usr/local/bin/byacc +.PP +We build perl using GNU make. We tried the native make once and it +worked too. +.SS "Testing Perl on BS2000" +.IX Subsection "Testing Perl on BS2000" +We still got a few errors during \f(CW\*(C`make test\*(C'\fR. Some of them are the +result of using bison. Bison prints \fIparser error\fR instead of \fIsyntax +error\fR, so we may ignore them. The following list shows +our errors, your results may differ: +.PP +op/numconvert.......FAILED tests 1409\-1440 +op/regexp...........FAILED tests 483, 496 +op/regexp_noamp.....FAILED tests 483, 496 +pragma/overload.....FAILED tests 152\-153, 170\-171 +pragma/warnings.....FAILED tests 14, 82, 129, 155, 192, 205, 207 +lib/bigfloat........FAILED tests 351\-352, 355 +lib/bigfltpm........FAILED tests 354\-355, 358 +lib/complex.........FAILED tests 267, 487 +lib/dumper..........FAILED tests 43, 45 +Failed 11/231 test scripts, 95.24% okay. 57/10595 subtests failed, 99.46% okay. +.SS "Installing Perl on BS2000" +.IX Subsection "Installing Perl on BS2000" +We have no nroff on BS2000 POSIX (yet), so we ignored any errors while +installing the documentation. +.SS "Using Perl in the Posix-Shell of BS2000" +.IX Subsection "Using Perl in the Posix-Shell of BS2000" +BS2000 POSIX doesn't support the shebang notation +(\f(CW\*(C`#!/usr/local/bin/perl\*(C'\fR), so you have to use the following lines +instead: +.PP +: # use perl + eval 'exec /usr/local/bin/perl \-S \f(CW$0\fR ${1+"$@"}' + if 0; # ^ Run only under a shell +.SS "Using Perl in ""native"" BS2000" +.IX Subsection "Using Perl in ""native"" BS2000" +We don't have much experience with this yet, but try the following: +.PP +Copy your Perl executable to a BS2000 LLM using bs2cp: +.PP +\&\f(CW\*(C`bs2cp /usr/local/bin/perl \*(Aqbs2:perl(perl,l)\*(Aq\*(C'\fR +.PP +Now you can start it with the following (SDF) command: +.PP +\&\f(CW\*(C`/START\-PROG FROM\-FILE=*MODULE(PERL,PERL),PROG\-MODE=*ANY,RUN\-MODE=*ADV\*(C'\fR +.PP +First you get the BS2000 commandline prompt ('*'). Here you may enter +your parameters, e.g. \f(CW\*(C`\-e \*(Aqprint "Hello World!\e\en";\*(Aq\*(C'\fR (note the +double backslash!) or \f(CW\*(C`\-w\*(C'\fR and the name of your Perl script. +Filenames starting with \f(CW\*(C`/\*(C'\fR are searched in the Posix filesystem, +others are searched in the BS2000 filesystem. You may even use +wildcards if you put a \f(CW\*(C`%\*(C'\fR in front of your filename (e.g. \f(CW\*(C`\-w +checkfiles.pl %*.c\*(C'\fR). Read your C/C++ manual for additional +possibilities of the commandline prompt (look for +PARAMETER-PROMPTING). +.SS "Floating point anomalies on BS2000" +.IX Subsection "Floating point anomalies on BS2000" +There appears to be a bug in the floating point implementation on BS2000 POSIX +systems such that calling \fBint()\fR on the product of a number and a small +magnitude number is not the same as calling \fBint()\fR on the quotient of +that number and a large magnitude number. For example, in the following +Perl code: +.PP +.Vb 4 +\& my $x = 100000.0; +\& my $y = int($x * 1e\-5) * 1e5; # \*(Aq0\*(Aq +\& my $z = int($x / 1e+5) * 1e5; # \*(Aq100000\*(Aq +\& print "\e$y is $y and \e$z is $z\en"; # $y is 0 and $z is 100000 +.Ve +.PP +Although one would expect the quantities \f(CW$y\fR and \f(CW$z\fR to be the same and equal +to 100000 they will differ and instead will be 0 and 100000 respectively. +.SS "Using PerlIO and different encodings on ASCII and EBCDIC partitions" +.IX Subsection "Using PerlIO and different encodings on ASCII and EBCDIC partitions" +Since version 5.8 Perl uses the new PerlIO on BS2000. This enables +you using different encodings per IO channel. For example you may use +.PP +.Vb 9 +\& use Encode; +\& open($f, ">:encoding(ascii)", "test.ascii"); +\& print $f "Hello World!\en"; +\& open($f, ">:encoding(posix\-bc)", "test.ebcdic"); +\& print $f "Hello World!\en"; +\& open($f, ">:encoding(latin1)", "test.latin1"); +\& print $f "Hello World!\en"; +\& open($f, ">:encoding(utf8)", "test.utf8"); +\& print $f "Hello World!\en"; +.Ve +.PP +to get two files containing "Hello World!\en" in ASCII, EBCDIC, ISO +Latin\-1 (in this example identical to ASCII) respective UTF-EBCDIC (in +this example identical to normal EBCDIC). See the documentation of +Encode::PerlIO for details. +.PP +As the PerlIO layer uses raw IO internally, all this totally ignores +the type of your filesystem (ASCII or EBCDIC) and the IO_CONVERSION +environment variable. If you want to get the old behavior, that the +BS2000 IO functions determine conversion depending on the filesystem +PerlIO still is your friend. You use IO_CONVERSION as usual and tell +Perl, that it should use the native IO layer: +.PP +.Vb 2 +\& export IO_CONVERSION=YES +\& export PERLIO=stdio +.Ve +.PP +Now your IO would be ASCII on ASCII partitions and EBCDIC on EBCDIC +partitions. See the documentation of PerlIO (without \f(CW\*(C`Encode::\*(C'\fR!) +for further possibilities. +.SH AUTHORS +.IX Header "AUTHORS" +Thomas Dorner +.SH "SEE ALSO" +.IX Header "SEE ALSO" +INSTALL, perlport. +.SS "Mailing list" +.IX Subsection "Mailing list" +If you are interested in the z/OS (formerly known as OS/390) +and POSIX-BC (BS2000) ports of Perl then see the perl-mvs mailing list. +To subscribe, send an empty message to perl\-mvs\-subscribe@perl.org. +.PP +See also: +.PP +.Vb 1 +\& https://lists.perl.org/list/perl\-mvs.html +.Ve +.PP +There are web archives of the mailing list at: +.PP +.Vb 1 +\& https://www.nntp.perl.org/group/perl.mvs/ +.Ve +.SH HISTORY +.IX Header "HISTORY" +This document was originally written by Thomas Dorner for the 5.005 +release of Perl. +.PP +This document was podified for the 5.6 release of perl 11 July 2000. |