home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------------------------------
-
- Copyright (c) The Charles Stark Draper Laboratory, Inc., 1992, 1993
-
- MVS Gopher Server originally by Shawn Hart (Univ. of Delaware).
-
- This software is provided on an "AS IS" basis. All warranties,
- including the implied warranties of merchantability and fitness,
- are expressly denied.
-
- Provided this copyright notice is included, this software may
- be freely distributed and not offered for sale.
-
- Changes or modifications may be made and used only by the maker
- of same, and not further distributed. Such modifications should
- be mailed to the author for consideration for addition to the
- software and incorporation in subsequent releases.
-
- ------------------------------------------------------------------------
-
- MVS Gopher Client - Version 2 Release 1 - March 1993
-
- Author: Steve Bacher <seb1525@mvs.draper.com>
-
- MVS Gopher Server
-
- Author: Shawn Hart <shawn.hart@mvs.udel.edu>
- Enhancements: Steve Bacher <seb1525@mvs.draper.com>
- Customizations: Lou Joseph <CWMY5C@IRISHMVS.CC.ND.EDU>
-
- ------------------------------------------------------------------------
-
- Contents of PDS's belonging to Gopher distribution:
-
- Member PDS Type Description
-
- $$README CNTL This file
- ACCESS CNTL Sample server access file
- ALLOAD CNTL JCL to allocate GOPHER load library
- COMPILEC CNTL JCL to compile and link C source for client
- COMPILES CNTL JCL to compile and link C source for server
- GOPHERD CNTL JCL to run the GOPHER server in batch (No TSO)
- GOPHERT CNTL JCL to run the GOPHER server in batch (w. TSO)
- HELP CNTL TSO Help for Gopher client (with XPROC support)
- HELQ CNTL TSO Help for Gopher client (without XPROC)
- INSTALLC CNTL How to install the GOPHER MVS client
- INSTALLS CNTL How to install the GOPHER MVS server
- MENU CNTL Initial Gopher server menu
- PARMS CNTL Sample Gopher startup parameters
- GOPHER CLIST Exec by which users invoke the Gopher client
- NNMFIUCV CLIST Exec to check for multiple socket applications
- HOSTNAME CLIST Sample "hostname" command for REXX feature
- TSOHELP CLIST Sample REXX exec for Gopher TSO HELP menu hole
- GGM... PANEL ISPF regular panels
- GG... H C headers for compilation
- GG... C C source for compilation
- ABOUT... ABOUT "About This Gopher" text
-
- --------------------------------------------------------------------
-
- Where to Go from Here:
-
- To install the GOPHER MVS client, read member INSTALLC.
-
- To install the GOPHER MVS server, read member INSTALLS.
-
- Note:
-
- You may install only the client, only the server, or both the
- client and the server. It is purely up to what your needs are.
-
- --------------------------------------------------------------------
-
- Changes:
-
- 10/19/92 - Improvements in initial startup and GOPHERRC customization
- 12/07/92 - Customizations to support SNS/TCPAccess
- 03/20/93 - Version 2: Improved browse function
- Printing support
- Bookmark support
- New commands: PRT, INFO, MENU, BOOKMARK
- Configurable startup parameter file
- Ability to run multiple servers on same MVS
-
- --------------------------------------------------------------------
-
- Questions? Comments? Suggestions? Gripes? Please email to...
-
- Steve Bacher <seb@draper.com> or <seb1525@mvs.draper.com>
-
-
- Directions for Installing the GOPHER MVS Client
-
- Assuming the PDS's have been created:
-
- 1. Customize the ALLOAD and COMPILEC JCL members to reflect your
- local conventions. Note: If you intend to place the executable into
- an existing library, you can suppress that part of the ALLOAD JCL.
- The name of the data set created must match across both members.
-
- 2. Customize the GGUSER header file as shown by the comments therein.
- Note in particular the defines for your TCP/IP and your C compiler.
- There are changes to the linkedit JCL that are related to these.
-
- 3. Customize the GOPHER exec to define the names of the MVS libraries
- to contain the panel and load library members. The load library must
- be the one specified in the ALLOAD JCL, if you are creating it anew.
- Observe the comments relating to the use of LIBDEF and ISPF APPLIDs.
-
- It is in the GOPHER exec that you will also customize the name of the
- default Gopher server. Note that the user's GOPHERRC file gets built
- from the contents of this exec.
-
- Note that if you install one of the REXX execs, you must also install
- the NNMFIUCV exec in the same library. This exec implements a rude
- check for an existing TCP/IP socket application (e.g. another GOPHER)
- in a different PIE MultiTSO session. It prevents your users from
- crashing TCP/IP, so it is highly recommended that you make use of it.
-
- 4. If you are running ISPF Version 2 or earlier, edit the GOPHER panels
- whose names begin "GGMP...". These are popups, and will not work
- under ISPF Version 2 unless you change the )BODY line. Remove the
- WINDOW(...) parameter from the )BODY line of each panel so that the
- line just says )BODY or )BODY EXPAND(``), as the case may be.
-
- Now, to install:
-
- 5. Submit the ALLOAD JCL to allocate the load library from which the
- executable program will be run. If you intend to place the executable
- into an existing library, you can skip this step, but you should make
- sure that there is no previous load module named GGCLIENT in the load
- library of your choice before you proceed.
-
- 6. Submit the COMPILEC JCL to compile all the C sources and create
- the executable Gopher load module.
-
- The first time you run this you can expect a return code of 8 from
- the linkedit. Like SMP/E, this is OK if the only reason is an IEW0342
- because the "INCLUDE SYSLMOD(GGCLIENT)" did not find an existing load
- module. If you get IEW0132 (unresolved external reference) or
- IEW0241 (ESD type definition conflict), your linkedit went awry.
- Don't use the resultant load module. Check the libraries you
- specified on the link step to see what went wrong.
-
- In the future, if you have to recompile individual modules, you can use
- the same JCL to compile only those modules, and the link will include
- the new modules in the existing executable load module.
-
- *********************************************************************
-
- IMPORTANT: If you are running TCP/IP V2R2 or higher on MVS, you must
- change the following library names in the compile and link JCL:
-
- TCPIP.COMMMAC should be changed to TCPIP.SEZACMAC
- TCPIP.COMMTXT should be changed to TCPIP.SEZACMTX
-
- If you are using SNS/TCPAccess, use these library names, or
- whatever names are defined at your installation:
-
- TCPIP.COMMMAC should be changed to SNSTCP.V110.H
- TCPIP.COMMTXT should be changed to SNSTCP.V110.CILIB
-
- *********************************************************************
-
- Note: If you have defined C370V1 in the GGUSER header file, you must
- also include the system linklist load library or libraries containing
- ISPLINK, ISPEXEC and IKJEFF18 when linking. Otherwise you may delete
- the lines from the linkedit JCL that reference them.
-
- Note: You need not include the PASCAL libraries or the AMPZMVSB
- module if you are using TCP/IP Version 2 or higher, in which case
- you must also define TCPIPV2 in the GGUSER headerfile.
-
- 7. Copy all the members of the panel PDS into the ISPF panel library
- specified in the GOPHER exec.
-
- 8. Copy one of the help members (HELP or HELQ) from the CNTL PDS into
- your local TSO HELP library under the name GOPHER. You may also
- create an additional HELP member called GOPHLOC containing
- information local to your site, if you wish.
-
- Which CNTL member should you use? If you don't have XPROC, use HELQ.
- If you do have XPROC, use HELP. You will have to modify your GOPHER
- clist either way. If you don't have XPROC, you should get it,
- because you can specify more options on Gopher if you do. You can
- get XPROC via USC's "MVS network server" code distribution service.
- For more information about this, send an email message to
- SERVICE@MVSA.USC.EDU - or SERVICE@USCMVSA, which will normally give
- better results if you have a BITNET (NJE) return address.
-
- 9. Create the "About This Gopher" PDS from the ABOUT PDS. This has
- all the text users should see when they select the "About This Gopher"
- item from the MVS client. It also contains all the documentation you
- need about setting up the client and the server, as well as creating
- menus and REXX execs for use with MVS Gopher. You may have already
- done this as part of the server install, but it should also be
- available from the client in "local" (serverless) mode, so that is
- why I mention it here.
-
- --------------------------------------------------------------------
-
- Note: Make sure that the C/370 run time library is available,
- either in the system link list or in the ISPLLIB concatenation,
- before attempting to run GOPHER.
-
- If the C/370 runtime library is not in the link list or otherwise
- available to ISPF at execution time, you may arrange for it to be
- allocated via LIBDEF in the GOPHER exec (I haven't tried this).
-
-
- Directions for Installing the GOPHER MVS Server
-
- Assuming the PDS's have been created:
-
- 1. Customize the ALLOAD and COMPILES JCL members to reflect your
- local conventions. Note: If you intend to place the executable into
- an existing library, you can suppress that part of the ALLOAD JCL.
- The name of the data set created must match across both members.
-
- 2. Customize the GGUSER header file as shown by the comments therein.
- Note in particular the defines for your TCP/IP and your C compiler.
- There are changes to the linkedit JCL that are related to these.
-
- Now, to install:
-
- 3. Submit the ALLOAD JCL to allocate the load library from which the
- executable program will be run. If you intend to place the executable
- into an existing library, you can skip this step, but you should make
- sure that there is no previous load module named GGSERVER or GGSTASK
- in the load library of your choice before you proceed.
-
- 4. Submit the COMPILES JCL to compile all the C sources and create
- the executable Gopher load modules.
-
- The first time you run this you can expect return codes of 8 from
- the linkedit. Like SMP/E, this is OK if the only reason is an IEW0342
- because the "INCLUDE SYSLMOD(...)" did not find an existing load
- module. If you get IEW0132 (unresolved external reference) or
- IEW0241 (ESD type definition conflict), your linkedit went awry.
- Don't use the resultant load module. Check the libraries you
- specified on the link step to see what went wrong.
-
- In the future, if you have to recompile individual modules, you can use
- the same JCL to compile only those modules, and the link will include
- the new modules in the existing executable load module.
-
- *********************************************************************
-
- IMPORTANT: If you are running TCP/IP V2R2 or higher on MVS, you must
- change the following library names in the compile and link JCL:
-
- TCPIP.COMMMAC should be changed to TCPIP.SEZACMAC
- TCPIP.COMMTXT should be changed to TCPIP.SEZACMTX
-
- If you are using SNS/TCPAccess, use these library names, or
- whatever names are defined at your installation:
-
- TCPIP.COMMMAC should be changed to SNSTCP.V110.H
- TCPIP.COMMTXT should be changed to SNSTCP.V110.CILIB
-
- *********************************************************************
-
- Note: If you have defined C370V1 in the GGUSER header file, you must
- also include the system linklist load library containing IKJEFF18
- when linking. Otherwise you may delete the line from the linkedit
- JCL that references it.
-
- Note: You need not include the PASCAL libraries or the AMPZMVSB
- module if you are using TCP/IP Version 2 or higher, in which case
- you must also define TCPIPV2 in the GGUSER headerfile.
-
- 5. Create the "About This Gopher" PDS from the ABOUT PDS. This has
- all the text users should see when they select the "About This Gopher"
- item from the MVS client. It also contains all the documentation you
- need about setting up the client and the server, as well as creating
- menus and REXX execs for use with MVS Gopher. You may have already
- done this as part of the client install.
-
- *** NOTE: In member MENU, you must change the line that reads
- "PATH=GOPHER.ABOUT.PDS(ABOUT)" to reflect the actual name of your
- ABOUT PDS. If you are using an earlier distribution of the MVS
- Gopher server that has the line PATH=DD:GGABOUT(ABOUT), then you
- must change that as well, because that won't work to get additional
- PDS members as the user climbs down the Gopher tree.
-
- 6. Create your Gopher access file. See the instructions in the
- "About This Gopher" PDS for the format.
-
- 7. Create your Gopher startup parameter file. This is not required,
- but may be used to change compiled-in defaults. See the PARMS member
- for a default.
-
- 8. Allocate a PDS to hold Gopher REXX execs. This is not required.
- See the TSOHELP exec in the clist library of the distribution for a
- sample application.
-
- 9. Create the MVS Gopher started task JCL from either of the samples
- given in GOPHERD and GOPHERT. The GOPHERT is recommended so that you
- can use REXX execs that issue TSO commands, but you may not want to
- use this for security reasons. Either way, customize liberally.
-
- Started task parameters:
-
- MODULE=GGSERVER the Gopher server load module in STEPLIB
- STEPLIB='GOPHER.LOAD' the load library containing the above
- EXECLIB='GOPHER.EXEC' the PDS containing server REXX execs
- ACCESS='GOPHER.ACCESS' the installation access file (sequential)
- ABOUT='GOPHER.ABOUT' the PDS containing "About This Gopher" info
- MENU='GOPHER.MENU' the initial gopher menu (sequential)
- PARMS='GOPHER.PARMS' the server startup file (sequential)
- GPARM= the server EXEC parms (e.g. -d for debug)
-
- Note: if you specify GPARM='-D', a GGDEBUG DD must be included.
-
- You are strongly recommended to create 2 started tasks: one for
- non-REXX requests with MTFTASKS set to 8, and one for REXX requests
- with MTFTASKS set to 1 (because of TSO/E multitasking bugs).
- Give each a different port number in the GGPARMS configuration file
- allocated to it. See sample below.
-
- 10. Add the name of the Gopher server started task (the name as it
- appears in SYS1.PROCLIB, not necessarily "GOPHER") to the MVS TCPIP
- profile data set (or have your MVS TCP/IP system programmer do it).
- In the examples below, let's say you've called it GOPHSRV. Add this
- in 2 places:
-
- (a) under AUTOLOG, so that TCP/IP will start the Gopher server
- automatically (a la inetd for unix) when a client connects.
- Just add the name to the list (e.g. GOPHSRV).
-
- (b) under PORT, so nobody can spoof the Gopher port. The format
- here is: 70 TCP GOPHSRV
-
- Repeat both for whatever number of Gopher server started tasks you
- create (with different port numbers).
-
- --------------------------------------------------------------------
-
- Note: Make sure that the C/370 run time library is available,
- either in the system link list or in the STEPLIB concatenation,
- before attempting to run GOPHER.
-
- --------------------------------------------------------------------
-
- Following is an example of how to define two Gopher servers.
-
- 'SYS1.PROCLIB(GOPHSRV)' - the primary gopher server (port 70)
- will not run any REXX execs
-
- //GOPHERD PROC MODULE=GGSERVER,
- // STEPLIB='GOPHER.LOAD',
- // ACCESS='GOPHER.ACCESS(ACCESS)',
- // PARMS='GOPHER.ACCESS(PARMS)',
- // MENU='GOPHER.ACCESS(MENU)',
- // STDERR='*',
- // STDOUT='*',
- // GPARM=
- //*
- //GOPHERD EXEC PGM=&MODULE,PARM='&GPARM'
- //STEPLIB DD DISP=SHR,DSN=&STEPLIB
- //SYSERR DD SYSOUT=&STDERR
- //SYSPRINT DD SYSOUT=&STDOUT
- //SYSIN DD DUMMY
- //GGDEBUG DD SYSOUT=*
- //GGACCESS DD DISP=SHR,DSN=&ACCESS
- //GGPARMS DD DISP=SHR,DSN=&PARMS
- //GGGOPHER DD DISP=SHR,DSN=&MENU
-
- 'SYS1.PROCLIB(GOPHSRV2)' - the secondary gopher server (port 1570)
- will run REXX execs
-
- //GOPHERD2 PROC MODULE=GGSERVER,
- // STEPLIB='GOPHER.LOAD',
- // EXECLIB='GOPHER.EXEC',
- // ACCESS='GOPHER.ACCESS(ACCESS2)',
- // PARMS='GOPHER.ACCESS(PARMS2)',
- // MENU='GOPHER.ACCESS(MENU2)',
- // VIO=VIO,
- // STDERR='*',
- // STDOUT='*',
- // GPARM=
- //*
- //GOPHERD2 EXEC PGM=IKJEFT01,DYNAMNBR=128, PARM='&MODULE &GPARM'
- //STEPLIB DD DISP=SHR,DSN=&STEPLIB
- //SYSEXEC DD DISP=SHR,DSN=&EXECLIB /* needed for %-invoked execs */
- //GGEXEC DD DISP=SHR,DSN=&EXECLIB
- //SYSTSPRT DD UNIT=&VIO,SPACE=(TRK,(100,100)),RECFM=VBA,LRECL=255
- //SYSERR DD SYSOUT=&STDERR
- //SYSPRINT DD SYSOUT=&STDOUT
- //SYSTSIN DD DUMMY
- //SYSIN DD DUMMY
- //GGDEBUG DD SYSOUT=*
- //GGACCESS DD DISP=SHR,DSN=&ACCESS
- //GGPARMS DD DISP=SHR,DSN=&PARMS
- //GGGOPHER DD DISP=SHR,DSN=&MENU
-
- 'GOPHER.ACCESS(PARMS)' - startup parameters used by the primary server
-
- mtftasks 8 (this is the default)
- port 70 (this is the default too)
-
- 'GOPHER.ACCESS(PARMS2)'- startup parameters used by the secondary server
-
- mtftasks 1 Force single threading to prevent TSO burpages
- port 1570 Must be different from primary server's port
-
- -----------------------------------------------------------------------
-
- I have not included members ACCESS, ACCESS2, MENU and MENU2, but you
- will find samples elsewhere in this distribution. ACCESS and ACCESS2
- can be the same, except that you don't need the REXX execs to be in
- ACCESS since ACCESS can't run REXX execs. MENU and MENU2 should be
- the same, since you may want to configure various Gopher clients
- on other machines to try both MVS servers, but it's up to you.
-
-
-