Commit 0994d737 authored by John Malmberg's avatar John Malmberg Committed by Yang Tse
Browse files

Building_vms_pcsi_kit

These are the files needed to build VMS distribution packages known as
PCSI kits.

Also minor update to the existing files, mainly to the documentation and
file clean up code.
parent 96749554
Loading
Loading
Loading
Loading
+132 −0
Original line number Diff line number Diff line
$! File: Backup_gnv_curl_src.com
$!
$! $Id$
$!
$! Procedure to create backup save sets for installing in a PCSI kit.
$!
$! To comply with most Open Source licenses, the source used for building
$! a kit will be packaged with the distribution kit for the binary.
$!
$! Backup save sets are the only storage format that I can expect a
$! VMS system to be able to extract ODS-5 filenames and directories.
$!
$! The make_pcsi_kit_name.com needs to be run before this procedure to
$! properly name the files that will be created.
$!
$! This file is created from a template file for the purpose of making it
$! easier to port Unix code, particularly open source code to VMS.
$! Therefore permission is freely granted for any use.
$!
$! Copyright 2009, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
$! 13-Jun-2009 J. Malmberg
$!
$!===========================================================================
$!
$! Save default
$ default_dir = f$environment("DEFAULT")
$!
$ arch_type = f$getsyi("ARCH_NAME")
$ arch_code = f$extract(0, 1, arch_type)
$!
$ if arch_code .nes. "V"
$ then
$   set proc/parse=extended
$ endif
$!
$ ss_abort = 44
$ status = ss_abort
$!
$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
$ if kit_name .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
$ if producer .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
$ if filename_base .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_BASH_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$!
$ node_swvers = f$getsyi("NODE_SWVERS")
$ node_swvers_type = f$extract(0, 1, node_swvers)
$ node_swvers_vers = f$extract(1, f$length(node_swvers), node_swvers)
$ swvers_maj = f$element(0, ".", node_swvers_vers)
$ node_swvers_min_update = f$element(1, ".", node_swvers_vers)
$ swvers_min = f$element(0, "-", node_swvers_min_update)
$ swvers_update = f$element(1, "-", node_swvers_min_update)
$!
$ if swvers_update .eqs. "-" then swvers_update = ""
$!
$ vms_vers = f$fao("!2ZB!2ZB!AS", 'swvers_maj', 'swvers_min', swvers_update)
$!
$!
$!
$! If available make an interchange save set
$!-------------------------------------------
$ interchange = ""
$ if arch_code .eqs. "V"
$ then
$   interchange = "/interchange"
$ endif
$ if (swvers_maj .ges. "8") .and. (swvers_min .ges. 4)
$ then
$   interchange = "/interchange/noconvert"
$ endif
$!
$!
$! Move to the base directories
$ set def [--]
$!
$! Put things back on error.
$ on warning then goto all_exit
$!
$ current_default = f$environment("DEFAULT")
$ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
$!
$ src_root = "src_root:"
$ if f$trnlnm("src_root1") .nes. "" then src_root = "src_root1:"
$ backup'interchange' 'src_root'[curl...]*.*;0 -
           'filename_base'_original_src.bck/sav
$ status = $status
$!
$! There may be a VMS specific source kit
$!-----------------------------------------
$ vms_root = "vms_root:"
$ if f$trnlnm("vms_root1") .nes. "" then vms_root = "vms_root1:"
$ files_found = 0
$ define/user sys$error nl:
$ define/user sys$output nl:
$ directory 'vms_root'[...]*.*;*/exc=*.dir
$ if '$severity' .eq. 1 then files_found = 1
$!
$ if files_found .eq. 1
$ then
$   backup'interchange' 'vms_root'[curl...]*.*;0 -
            'filename_base'_vms_src.bck/sav
$   status = $status
$ endif
$!
$all_exit:
$ set def 'default_dir'
$ exit
+288 −0
Original line number Diff line number Diff line
$! File: build_libcurl_pc.com
$!
$! $Id:$
$!
$! Build the curl-config file from the config_curl.in file
$!
$! Copyright 2013, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
$!
$! 15-Jun-2013  J. Malmberg
$!
$!===========================================================================
$!
$! Skip this if the curl-config. already exists.
$ if f$search("[--]curl-config.") .nes. "" then goto all_exit
$!
$! Need to know the kit type.
$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
$ if kit_name .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$!
$!
$! Parse the kit name into components.
$!---------------------------------------
$ producer = f$element(0, "-", kit_name)
$ base = f$element(1, "-", kit_name)
$ product = f$element(2, "-", kit_name)
$ mmversion = f$element(3, "-", kit_name)
$ majorver = f$extract(0, 3, mmversion)
$ minorver = f$extract(3, 2, mmversion)
$ updatepatch = f$element(4, "-", kit_name)
$ if updatepatch .eqs. "-" then updatepatch = ""
$!
$! kit type of "D" means a daily build
$ kit_type = f$edit(f$extract(0, 1, majorver), "upcase")
$!
$ cfg_file_in = "[--]curl-config.in"
$!
$ if f$search(cfg_file_in) .eqs. ""
$ then
$    write sys$output "Can not find curl-config.in."
$    goto all_exit
$ endif
$!
$ if (f$getsyi("HW_MODEL") .lt. 1024)
$ then
$    arch_name = "VAX"
$ else
$    arch_name = ""
$    arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
$    if (arch_name .eqs. "") then arch_name = "UNK"
$ endif
$!
$!
$ curl_version = "0.0.0"
$ open/read vf [--.include.curl]curlver.h
$version_loop:
$   read vf/end=version_loop_end line_in
$   if line_in .eqs. "" then goto version_loop
$   key = f$element(0, " ", line_in)
$   if key .nes. "#define" then goto version_loop
$   name = f$element(1, " ", line_in)
$   if name .eqs. "LIBCURL_VERSION"
$   then
$       curl_version = f$element(2, " ", line_in) - """" - """"
$       goto version_loop
$   endif
$   if name .eqs. "LIBCURL_VERSION_NUM"
$   then
$       version_num_hex = f$element(2, " ", line_in)
$       version_num = version_num_hex - "0x"
$       goto version_loop
$   endif
$version_loop_end:
$ close vf
$!
$!
$ create [--]curl-config.
$ open/append pco [--]curl-config.
$ open/read pci 'cfg_file_in'
$cfg_file_loop:
$ read pci/end=cfg_file_loop_end line_in
$!
$! blank lines
$ if line_in .eqs. ""
$ then
$   write pco ""
$   goto cfg_file_loop
$ endif
$!
$! comment lines
$ key = f$extract(0, 1, line_in)
$ if key .eqs. "#"
$ then
$   write pco line_in
$   goto cfg_file_loop
$ endif
$!
$! No substitution line
$ line_in_len = f$length(line_in)
$ if f$locate("@", line_in) .ge. line_in_len
$ then
$   write pco line_in
$   goto cfg_file_loop
$ endif
$!
$ if f$locate("@prefix@", line_in) .lt line_in_len
$ then
$    if kit_type .nes. "D"
$    then
$        write pco "prefix=/usr"
$    else
$        write pco "prefix=/beta"
$    endif
$    goto cfg_file_loop
$ endif
$ if f$locate("@exec_prefix@", line_in) .lt line_in_len
$ then
$    if kit_type .nes. "D"
$    then
$        write pco "exec_prefix=/usr"
$    else
$        write pco "exec_prefix=/beta"
$    endif
$    goto cfg_file_loop
$ endif
$ if f$locate("=@includedir@", line_in) .lt line_in_len
$ then
$    write pco "includedir=$(prefix}/include"
$    goto cfg_file_loop
$ endif
$ if f$locate("X@includedir@", line_in) .lt line_in_len
$ then
$    write pco "        if test ""X$(prefix}/include""; then"
$    goto cfg_file_loop
$ endif
$ if f$locate("I@includedir@", line_in) .lt line_in_len
$ then
$    write pco "          echo "${CPPFLAG_CURL_STATICLIB}-I$(prefix}/include"
$    goto cfg_file_loop
$ endif
$ if f$locate("@CPPFLAG_CURL_STATICLIB@", line_in) .lt line_in_len
$ then
$    write pco "cppflag_curl_staticlib=-DCURL_STATICLIB"
$    goto cfg_file_loop
$ endif
$ if f$locate("@ENABLE_SHARED@", line_in) .lt line_in_len
$ then
$    write pco "        echo no"
$    goto cfg_file_loop
$ endif
$ if f$locate("@CURL_CA_BUNDLE@", line_in) .lt line_in_len
$ then
$    write pco "        echo """""
$    goto cfg_file_loop
$ endif
$ if f$locate("@CC@", line_in) .lt line_in_len
$ then
$    write pco "        echo ""cc"""
$    goto cfg_file_loop
$ endif
$ if f$locate("@SUPPORT_FEATURES@", line_in) .lt line_in_len
$ then
$    if arch_name .eqs. "VAX"
$    then
$        write pco "        for feature in SSL libz NTLM ""; do"
$    else
$        write pco "        for feature in SSL IPv6 libz NTLM ""; do"
$    endif
$    goto cfg_file_loop
$ endif
$ if f$locate("@SUPPORT_PROTOCOLS@", line_in) .lt line_in_len
$ then
$    proto1 = "DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS"
$    proto2 = " LDAP LDAPS POP3 POP3S RTSP SMTP SMTPS TELNET TFTP"
$    proto = proto1 + proto2
$    write pco "        for protocol in " + proto + "; do"
$    goto cfg_file_loop
$ endif
$ if f$locate("libcurl @CURLVERSION@", line_in) .lt line_in_len
$ then
$    write pco "        echo libcurl ''curl_version'"
$    goto cfg_file_loop
$ endif
$ if f$locate("existing @CURLVERSION@", line_in) .lt line_in_len
$ then
$    line_start = -
  "          echo ""requested version $checkfor is newer than existing"
$    write pco "''line_start' ''curl_version'"""
$    goto cfg_file_loop
$ endif
$ if f$locate("`echo @versionnum@", line_in) .lt line_in_len
$ then
$    write pco "        numuppercase=`echo ''version_num' | tr 'a-f' 'A-F'`"
$    goto cfg_file_loop
$ endif
$ if f$locate(" echo @versionnum@", line_in) .lt line_in_len
$ then
$    write pco "        echo ''version_num'"
$    goto cfg_file_loop
$ endif
$ if f$locate("X@libdir@", line_in) .lt line_in_len
$ then
$    part1 = "        if test ""$(exec_prefix}/lib"" != ""X/usr/lib"""
$    part2 = "-a ""X$(exec_prefix}/lib"" != ""X/usr/lib64""; then"
$    write pco part1,part2
$    goto cfg_file_loop
$ endif
$ if f$locate("L@libdir@", line_in) .lt line_in_len
$ then
$    write pco "           CURLLIBDIR=""$(exec_prefix}/lib """
$    goto cfg_file_loop
$ endif
$ if f$locate("@REQUIRE_LIB_DEPS@", line_in) .lt line_in_len
$ then
$    write pco "        if test "Xyes" = "Xyes"; then"
$    goto cfg_file_loop
$ endif
$ if f$locate("@LIBCURL_LIBS@", line_in) .lt line_in_len
$ then
$    if arch_name .eqs. "VAX"
$    then
$        write pco "          echo ${CURLLIBDIR}-lssl -lcrypto -lz"
$    else
$        write pco "          echo ${CURLLIBDIR}-lssl -lcrypto -lgssapi -lz"
$    endif
$    goto cfg_file_loop
$ endif
$ if f$locate("@ENABLE_STATIC@", line_in) .lt line_in_len
$ then
$    write pco "        if test "Xyes" != "Xno" ; then"
$    goto cfg_file_loop
$ endif
$ if f$locate("@LIBCURL_LIBS@", line_in) .lt line_in_len
$ then
$    part1 = "          echo ${exec_prefix}/lib/libcurl.a"
$    part2 = "-L/usr/lib -L/SSL_LIB"
$    if arch_name .eqs. "VAX"
$    then
$        write pco "''part1' ''part2' -lssl -lcrypto -lz"
$    else
$        write pco "''part1' ''part2' -lssl -lcrypto -lgssapi -lz"
$    endif
$    goto cfg_file_loop
$ endif
$ if f$locate("@CONFIGURE_OPTIONS@", line_in) .lt line_in_len
$ then
$    if kit_type .nes. "D"
$    then
$        part1 = "        echo "" '--prefix=/usr' '--exec-prefix=/usr' "
$    else
$        part1 = "        echo "" '--prefix=/beta' '--exec_prefix=/beta' "
$    endif
$    if arch_name .eqs. "VAX"
$    then
$        part3 = ""
$    else
$        part3 = "'--with-gssapi' "
$    endif
$    part2 = "'--disable-dependency-tracking' '--disable-libtool-lock' "
$    part4 = "'--disable-ntlm-wb' '--with-ca-path=gnv$curl_ca_path'"""
$!
$    write pco part1,part2,part3,part4
$!
$    goto cfg_file_loop
$ endif
$!
$pc_file_loop_end:
$ close pco
$ close pci
$!
$all_exit:
$ exit
+38 −0
Original line number Diff line number Diff line
$! File: build_gnv_curl.com
$!
$! $Id$
$!
$! All in one build procedure
$!
$! Copyright 2009, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
$!
$! 11-Jun-2009	J. Malmberg
$!-----------------------------------------------------------------------
$!
$ @setup_gnv_curl_build.com
$!
$ bash gnv_curl_configure.sh
$!
$ @clean_gnv_curl.com
$!
$ bash make_gnv_curl_install.sh
$!
$ @gnv_link_curl.com
$!
$ purge new_gnu:[*...]/log
$!
$!
$exit
+488 −0

File added.

Preview size limit exceeded, changes collapsed.

+198 −0
Original line number Diff line number Diff line
$! File: Build_GNV_curl_pcsi_text.com
$!
$! $Id$
$!
$! Build the *.pcsi$text file from the four components:
$!    1. Generated =product header section
$!    2. [--]readme. file from the Curl distribution, modified to fit
$!       a pcsi$text file format.
$!    3. [--]copying file from the Curl distribution, modified to fit
$!       a pcsi$text file format.
$!    4. Generated Producer section.
$!
$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
$!
$! Copyright 2009, John Malmberg
$!
$! Permission to use, copy, modify, and/or distribute this software for any
$! purpose with or without fee is hereby granted, provided that the above
$! copyright notice and this permission notice appear in all copies.
$!
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
$!
$!
$! 15-Jun-2009  J. Malmberg
$!
$!===========================================================================
$!
$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
$ if kit_name .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
$ if producer .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
$ if producer_full_name .eqs. ""
$ then
$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
$   goto all_exit
$ endif
$!
$!
$! Parse the kit name into components.
$!---------------------------------------
$ producer = f$element(0, "-", kit_name)
$ base = f$element(1, "-", kit_name)
$ product = f$element(2, "-", kit_name)
$ mmversion = f$element(3, "-", kit_name)
$ majorver = f$extract(0, 3, mmversion)
$ minorver = f$extract(3, 2, mmversion)
$ updatepatch = f$element(4, "-", kit_name)
$ if updatepatch .eqs. "-" then updatepatch = ""
$!
$!
$ product_line = "=product ''producer' ''base' ''product'"
$ if updatepatch .eqs. ""
$ then
$     product_name = " ''majorver'.''minorver'"
$ else
$     product_name = " ''majorver'.''minorver'-''updatepatch'"
$ endif
$ product_line = product_line + " ''product_name' full"
$!
$!
$! If this is VAX and the file is on NFS, the names may be mangled.
$!-----------------------------------------------------------------
$ readme_file = ""
$ if f$search("[--]readme.") .nes. ""
$ then
$   readme_file = "[--]readme."
$ else
$   if f$search("[--]$README.") .nes. ""
$   then
$       readme_file = "[--]$README."
$   else
$       write sys$output "Can not find readme file."
$       goto all_exit
$   endif
$ endif
$ copying_file = ""
$ if f$search("[--]copying.") .nes. ""
$ then
$   copying_file = "[--]copying."
$ else
$   if f$search("[--]$COPYING.") .nes. ""
$   then
$       copying_file = "[--]$COPYING."
$   else
$       write sys$output "Can not find copying file."
$       goto all_exit
$   endif
$ endif
$!
$! Create the file as a VMS text file.
$!----------------------------------------
$ base_file = kit_name
$ create 'base_file'.pcsi$text
$!
$!
$! Start building file.
$!----------------------
$ open/append ptxt 'base_file'.pcsi$text
$ write ptxt product_line
$!
$!
$! First insert the Readme file.
$!
$ open/read rf 'readme_file'
$!
$ write ptxt "1 'PRODUCT"
$ write ptxt "=prompt ''producter' ''product' for OpenVMS"
$!
$rf_loop:
$   read/end=rf_loop_end rf line_in
$   if line_in .nes. ""
$   then
$!    PCSI files use the first character in for their purposes.
$!--------------------------------------------------------------
$     first_char = f$extract(0, 1, line_in)
$     if first_char .nes. " " then line_in = " " + line_in
$   endif
$   write ptxt line_in
$   goto rf_loop
$rf_loop_end:
$ close rf
$!
$!
$! Now add in the copying file
$!--------------------------------
$ write ptxt ""
$ write ptxt "1 'NOTICE"
$ write ptxt ""
$!
$ open/read cf 'copying_file'
$!
$cf_loop:
$   read/end=cf_loop_end cf line_in
$   if line_in .nes. ""
$   then
$!    PCSI files use the first character in for their purposes.
$!--------------------------------------------------------------
$     first_char = f$extract(0, 1, line_in)
$     if first_char .nes. " " then line_in = " " + line_in
$   endif
$   write ptxt line_in
$   goto cf_loop
$cf_loop_end:
$ close cf
$!
$! Now we need the rest of the boiler plate.
$!--------------------------------------------
$ write ptxt ""
$ write ptxt "1 'PRODUCER"
$ write ptxt "=prompt ''producer_full_name'"
$ write ptxt -
 "This software product is provided by ''producer_full_name' with no warranty."
$!
$ arch_type = f$getsyi("ARCH_NAME")
$ node_swvers = f$getsyi("node_swvers")
$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
$ majver = f$element(0, ".", vernum)
$ minverdash = f$element(1, ".", vernum)
$ minver = f$element(0, "-", minverdash)
$ dashver = f$element(1, "-", minverdash)
$ if dashver .eqs. "-" then dashver = ""
$ vmstag = majver + minver + dashver
$ code = f$extract(0, 1, arch_type)
$!
$ write ptxt "1 NEED_VMS''vmstag'"
$ write ptxt -
   "=prompt OpenVMS ''vernum' or later is not installed on your system."
$ write ptxt "This product requires OpenVMS ''vernum' or later to function."
$ write ptxt "1 NEED_ZLIB"
$ write ptxt "=prompt ZLIB 1.2-8 or later is not installed on your system."
$ write ptxt "This product requires ZLIB 1.2-8 or later to function."
$ write ptxt "1 SOURCE"
$ write ptxt "=prompt Source modules for ''product'"
$ write ptxt "The Source modules for ''product' will be installed."
$ write ptxt "1 RELEASE_NOTES"
$ write ptxt "=prompt Release notes are available in the [SYSHLP] directory."
$!
$ close ptxt
$!
$!
$!
$all_exit:
$ exit
Loading