These are several facilities to move data between Gnosis and other hosts.
To transfer data to a remote system, user first builds an Auxiliary Circuit with {(p2,getcircuit)}. This circuit is then passed the "remote file to record stream converter creator" {(p2,rfrscc)} to create a record stream consumer. This record stream may, in turn, be created from a segment or a record collection using the "protocol conversion creator" {(p2,protcc)}
CO(sysno,(st,string);=c;AUXMANGR)
The string, specified in EBCDIC, will be sent on the circuit built by GETCIRCUIT as soon as GETCIRCUIT returns. This string should contain the project code and any initial commands required to precede the file transfer. {Note that character code 0D translates to ASCII CR. The translation is as described at (sok6).} Any errors caused by errors in this command string may cause the transfer to fail and the in the worse case cause an indefinite delay for the caller. String is currently limited to 127 bytes and is in EBCDIC.
return codes
c=1 space bank is not prompt
c=2 domain creation failed
File description is the CMS file specification including option RECFM LRECL information. The form of this description is as specified on the AUXDEF^AUXFILE command (p3,auxfile).
STRU - Key to a Gnosis data structure that will be sent or into which the remote file will be put.
The type order code is as follows:
1 - GET immediate to STRU
2 - SEND immediate from STRU
3 - Setup for delayed transfer ("remember file-description")
4 - GET delayed (called at "OPEN" time)
5 - SEND delayed (called at "OPEN" time)
6 - CLOSE close circuit
kt+4 - DESTROY zap this domain
Return codes. Because AUXMANGR uses many keys in doing its work an extended return code scheme is used. The primary return code indicates what Keys failed and the extended (4 byte) return code indicates the return code from the failing key.
c=4 GETCIRCUIT failed on GETI
c=5 RFRSCC failed (first call) for GETI
c=6 RFRSCC failed (second call) for GETI
c=7 RFRSC {(rfrsc)} failed for GETI (probably multiple logons)
c=8 Creation of Protocol Converter {(protc)} failed for GETI
c=9 Failure in Protocol Converter for GETI
c=10 Status call to RFRSC failed for GETI
c=11 GETCIRCUIT failed on SENDI
c=12 RFRSCC failed (first call) for SENDI
c=13 RFRSCC failed (second call) for SENDI
c=14 RFRSC failed for SENDI (probably multiple logons)
c=15 Creation of Protocol Converter failed for SENDI
c=16 Failure in Protocol Converter for SENDI
c=17 Status call to RFRSC failed for SENDI
c=18 GETCIRCUIT failed for GETD
c=19 RFRSCC failed (first call) for GETD
c=20 RFRSCC failed (second call) for GETD
c=21 RFRSC failed for GETD
c=22 GETCIRCUIT filed for SENDD
c=23 RFRSCC failed (first call) for SENDD
c=24 RFRSCC failed (second call) for SENDD
c=25 RFRSC failed for SENDD
For immediate transfers AUXMANGR destroys all domains it uses to accomplish the file transfer after the transfer is complete. On delayed transfers AUXMANG allows for the destruction of the RFRSC (rfrsc) domain via the CLOSE order code.
CO(0;SIK,SOK,CCK ==> c;RFRSC,RT)
Return codes
c=2 Creation failed (god was resting)
RFRSC(0,(file description); ==> c,(2,lrecl);,,,CO)
File description is a CMS file description including FILENAME FILETYPE FILEMODE
Lrecl is the record length field from the CMS FSCB and specifies the maximum size record expected.
CO is a co-routine producer key over which the data travels using "blocked record" format.
File description is a CMS file description including FILENAME FILETYPE FILEMODE and optionally RECFM and LRECL (default Fixed 80)
CO is a co-routine consumer key obeying the blocked record protocol
c=5 synchronization error with CMS AUXFILE
kt+2 circuit zapped during the "AUXFILE" dialog (such as user already logged on)
The AUXDEF and AUXFILE commands use the AUXMANGRC key to create a domain that will manage file transfers to the specific Tymnet id available with the GETCIRCUIT key supplied. The AUXMANGR key is called with the appropriate order codes to direct the process.
Delayed Transfers
At "OPEN" time (in the OS simulator) AUXMANGR is called for the delayed transfer and the circuit is opened, the initial string is sent, a remote file conversion routine is created and called to send the AUXFILE command to the remote host. The co-routine key that is returned is used by the simulator (or other process) to do the data transfer. After the co-routine key has signalled end of file the AUXMANGR key can be called to close the circuit. This domain is not normally destroyed (especially by the simulator) so that the same key can be used to transfer the same file at a later time. The AUXMANGR key can be thought of as a capability to a remote file.
If opt is "SEGMENT" then the Gnosis file will be a segment in file transfer format. If opt is "record" then the Gnosis file will be a entry sequenced record collection.
Scenario
He gives a Gnosis operator access to the file.
Then the operator mounts that minidisk on the Gnosis machine.
pass a space bank for the operator to use, and
receive the segment in return.
GSENDFMT is an example of a CMS program that formats a minidisk at virtual address 134 as a transfer disk.
For each transfer, new CDA's are used. They are allocated
from a large range, namely 2**23 through 2**24-1
{(kernel-logic,xfer-range)}.
The program GRCV has a range key for this range.
Any time Gnosis is restarted, CDA's can be recycled.
The return code returned by GSEND is a password to be supplied to GRCV. 256 <= password < 2**16.
Each time GSEND is used it writes in a new, higher set of CDA's. Only one file can be transferred at once.
{GSEND seems to report "Error writing device 134." when the 134 disk is too small.}
The command described in (p3,receive) invokes GRCV for a terminal user.
GRCV is the name of the Gnosis program that receives transferred files, and also the name of a generally available key to that program.
At any given time GRCV is ready to receive a file starting at a certain cda in the transfer range (the "current cda"). GSENDFMT initializes the transfer disk so that GSEND will write the first file at page cda 2**23+1. GRCV is initialized with this value as its current cda.
GRCV(pw;SB1,M,SB2==>c;S) where pw is not kt, reads the file at the current cda and returns a key S to a fresh segment which contains the data.
pw must match the password returned at the time the file was written onto the transfer disk; if not, c will be 3.
SB1, M, SB2, and other values of c are as described for the fresh segment creator (p2,fsc).
The format of the data in the fresh segment is as follows. The first 4 bytes contain the number of records in the file. The rest of the fresh segment contains the records, in order. Each record consists of 4 bytes telling the number of bytes of data in the record, followed by the bytes of data. This length does not include the length of the 4 byte length field.
GRCV Control(x;==>0;) where x is not kt, sets the current cda to x.
{arcane}The operator can determine the value of x to use from the internals of the GSEND program or by doing the following CMS commands:
ENTER: >INPUT 134 3330 SCRATCH
CYL 000 HD 01 REC 002 COUNT ...
04096 1000 DATA LENGTH
00000 0000 ... ... ... ... 008ccccc ... 00032 0020 ... ...
The value of x to use is ccccc (hex).
GRCV and GRCV Control are prompt.
If you have forgotten the password, you can discover it by the following CMS commands:
ENTER: >INPUT 134 3330 SCRATCH
CYL 000 HD 01 REC 003 COUNT ...
04096 1000 DATA LENGTH
00000 0000 pppppppp ... ...
pppppppp is the password in hexadecimal.
Note
SRUP(pw;SB1,M,SB2 ==> c,data;K,,,NF) "Receive segments"
Multiple File Format
4 bytes containing the number of subrecords in this subfile
0 to 132 bytes of anything, called the "file header".
SRUP unpacks the file and puts the subrecords of each subfile in new fresh segments in the standard disk file transfer format (p2,record-file-format).
If SB2 runs out of space, the call may never return (because the SRUP back-end will crash).
The return code c indicates:
4 - file is not in multiple file format. K has the file as returned by GRCV. NF(0;==>0;) returns all other storage used.
5 - there are no more subfiles
2 - SB1 out of space
3 - password pw incorrect
4 - file is not in multiple file format. K has the file as returned by GRCV. NF(0;==>0;) returns all other storage used.
5 - there are no subfiles
6 - SB2 is out of space.
7 - the transfer disk range is not mounted
8 - there is a permanent disk error on the transfer range
SRUP is a factory with the same .hole as FGRCV (p2,fgrcv).
This key is used only for files that are transmitted as a result of a request from a remote server.
CO(host;GETC,TRANSPARTQ ==> c;SERVER)
CO(kt+5;SIK,SOK,CCK ==> kt+5;,,,CO)
CO(0;GRCV,TRANSPARTQ ==>c;SERVER)
PW is part of the Remote-File-Name and may represent a read password to a mini disk for this USERNAME. The disk address will also have to be part of the Remote-File-Name.
PW is a user selected 64 bit password. This password becomes the external name for this resource group. A remote server will specify this password on incoming files and for resolving file names for transfer from Gnosis. If the password is not unique, c will be nonzero.
There is one of these keys for each technology. There may be more.
TRANSPARTM is the only key that can be used to change the password associated with these resources, or the resources associated with this password. It is also the only key that can delete this password or resources from the participation registry.
PW is a remote password (like a mini-disk password) that is included as part of the file name. A disk address is also part of the file name.