summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man1/perlbs2000.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlbs2000.1')
-rw-r--r--upstream/mageia-cauldron/man1/perlbs2000.1290
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.