Reliable Transaction Router
System Manager's Manual


Previous Contents Index

B.8 Application Considerations

Although applications need not be directly concerned about Shadowing matters, certain points must be taken into consideration when implementing performance boosting optimizations:

B.9 Server States

The current state of a server can be examined as follows:


RTR> show server/full 
Servers: 
 
Process-id:                    13340     Facility:       RTR$DEFAULT_FACILITY 
Channel:                      131073     Flags:                           SRV 
State:                        active     Low Bound: 
High Bound:                   87  13     rcpnam:        "RTR$DEFAULT_CHANNEL" 
User Events:                       0     RTR Events:                        0 
Partition-Id:               16777216 
 
 
Process-id:                    13340     Facility:       RTR$DEFAULT_FACILITY 
Channel:                      196610     Flags:                           SRV 
State:                        active     Low Bound:                    88  13 
High Bound:                      0f'     rcpnam:                      "CHAN2" 
User Events:                       0     RTR Events:                        0 
Partition-Id:               16777217 
 

Figure B-2 gives an overview of the server state changes which appear in the "State:" field

Figure B-2 Server States


B.10 Client States

The current state of a client process can be examined as follows:


RTR> show client/full 
Clients: 
 
Process-id:                    13340     Facility:       RTR$DEFAULT_FACILITY 
Channel:                      458755     Flags:                           CLI 
State:                      declared     rcpnam:                      "CHAN3" 
User Events:                     255     RTR Events:                        0 

Figure B-3 describes the client state changes which appear in the "State:" field

Figure B-3 Client States


B.11 Partition States

The current state of a key-range partition can be examined using the SHOW PARTITION/FULL command for the routers and the backends:


RTR> show partition/router/full 
 
Facility:       RTR$DEFAULT_FACILITY     State:                        ACTIVE 
Low Bound:                         0     High Bound:               4294967295 
Failover policy:                                              fail_to_standby 
Backends:                                                               depth 
States:                                                                active 
Primary Main:                  depth     Shadow Main: 
 
 

Backend partitions:


RTR> show partition/backend/full 
 
Partition name:                                RTR$DEFAULT_PARTITION_16777217 
Facility:       RTR$DEFAULT_FACILITY     State:                        active 
Low Bound:                    "aaaa"     High Bound:                   "mmmm" 
Active Servers:                    0     Free Servers:                      1 
Transaction presentation:     active     Last Rcvy BE: 
Txns Active:                       0     Txns Rcvrd:                        0 
Failover policy:     fail_to_standby     Key range ID:               16777217 
 
 
Partition name:                                RTR$DEFAULT_PARTITION_16777218 
Facility:       RTR$DEFAULT_FACILITY     State:                        active 
Low Bound:                    "nnnn"     High Bound:                   "zzzz" 
Active Servers:                    0     Free Servers:                      1 
Transaction presentation:     active     Last Rcvy BE: 
Txns Active:                       0     Txns Rcvrd:                        0 
Failover policy:     fail_to_standby     Key range ID:               16777218 

Figure B-4 describes the partition state changes which appear in the "State:" field

Figure B-4 Router Partition States



Appendix C
XA Support

This appendix explains how RTR may be used with a X/OPEN Distributed Transaction Processing (DTP) conformant Resource Manager.

C.1 Introduction

The X/OPEN Distributed Transaction Processing (DTP) architecture defines a standard interface that lets application programs share resources provided by resource managers. The XA interface uses the two-phase commit protocol to commit transactions, and is a system-level bidirectional interface between the transaction manager (TM) and the resource manager (RM). In the RTR environment, RTR is the transaction manager and database software such as ORACLE8 is the resource manager.

Without XA, an RTR application must deal with replayed transactions after server recovery delivered with rtr_mt_msg1_uncertain; the application has to check if the traansaction has been committed to the database. With XA, the application does not need to be concerned with this problem.

The XA library is an external interface that enables a transaction manager to coordinate global transactions. These can include opening a resource manager, starting a transaction, rolling back a transaction, preparing and committing a transaction, and closing a resource manager. With XA, RTR can connect directly to a resource manager such as ORACLE8.

C.1.1 MONITOR XA

Monitors the internal status of XA interface activities. The command displays counters containing information such as the number of XA calls, call status (success or failure), and the number of read-only transactions. Provides counts for the open, close, start, end, prepare, commit, rollback, and recovery commands.

Command Syntax: MONITOR XA

C.1.2 New Qualifier to CREATE FACILITY Command

The CREATE FACILITY command has a new qualifier that references the defined resource manager. All resource managers that will be accessed by a facility must be specified. All transactions to these resource managers are recovered when the facility is created.

Command Syntax:


 
    CREATE FACILITY facility_name /frontend=... /backend=... /router=... 
                    /resource_manager=(RM_1, RM_2) 

where:

facility_name = user-specified facility name /resource_manager = the name of those RMs this facility references

For example:


        CREATE FACILITY test /front=N1 /back=N2/router=N3 
       /resource_manager=(employ_rm,payroll_rm) 

C.1.3 Modified RTR API

An application written to use RTR with XA does not need all existing RTR application programming interface statements. In particular, there is no longer a need to include code to handle rtr_mt_msg1_uncertain messages.

C.1.4 RTR Open Channel

RTR relies on the server application to specify which RM it is attached to using the open channel API. The server must submit an RM instance name with open string to the RTR open channel API before accessing the desired database. Both the RM instance name and the database name (RM name) contained in open string must be the same as that registered earlier using the REGISTER RM command. This information is now stored in the RTR key segment structure. A new RTR_F_OPE_XA_MANAGED flag is created to associate the channel with the XA interface. For example:


                typedef struct { 
                        rtr_keyseg_type_t ks_type; [RM_NAME_TYPE] 
                        rtr_keylen_t    ks_length;    [N/A] 
                        rtr_keylen_t    ks_offset;    [N/A] 
                        rtr_pointer_t   ks_lo_bound;  [RM_NAME] 
                        rtr_pointer_t   ks_hi_bound;  [OPEN_STRING] 
                } rtr_keyseg_t; 

C.2 Microsoft DTC Support

RTR for Windows NT is interoperable with Microsoft's Distributed Transaction Controller (DTC). DTC is supported via the RTR XA software architecture. That is, with the X/Open XA protocol, RTR users can develop application programs to update MS SQL Server databases, MSMQ, or other Microsoft resource managers under the control of a true distributed transaction.

This is possible because RTR (as a distributed transaction manager) is able to directly communicate with MS DTC to manage a transaction or perform a recovery via the XA protocol. For each standard XA call received from RTR, MS DTC will translate it into a corresponding OLE transaction call that SQL Server or MSMQ can use to update databases.


Appendix D
RTR Utility Error Messages

This appendix describes the various error messages that can be returned by the RTR utility.

%RTR-F-ABKEYW, Ambiguous qualifier or keyword - supply more characters

Explanation: Too few characters were used to truncate a keyword or qualifier name to make the keyword or qualifier name unique.
%RTR-F-ABVERB, Ambiguous command verb - supply more characters

Explanation: Too few characters were used to truncate a command name to make the command name unique.
%RTR-E-ACCTOOBIG, ACCESS string is too long

Explanation: The string supplied with the "/ACCESS" qualifier on the "open channel" command was too long.
%RTR-F-ACPINSRES, The RTR ACP has insufficient resources: details in the rtr log file

Explanation: The RTR ACP was unable to perform an operation due to an unusual condition. This is most probably a resource issue, e.g. when the ACP cannot create a shared memory segment.

The RTR log file for contains more details of the problem.

%RTR-E-ACPNOTVIA, RTR ACP is no longer a viable entity, restart RTR

Explanation: Indicates that the RTR ACP process has terminated unexpectedly.
%RTR-I-ALRDYINSTATE, Partition is already in the desired state

Explanation: Returned following an attempt to change the state of shadowing for a partition when the partition was already in the desired state.
%RTR-E-AMBIGDISP, Ambiguous monitor file name, [A]

Explanation: The filename [A] could refer to more than one monitor file. Please supply more characters.
%RTR-F-AMBROUNAM, Ambiguous API routine name for CALL - supply more characters

Explanation: The parameter for the CALL command is the name (or part of a name) of an RTR API routine. This allows the user to type, e.g. "rtr call accept" instead of "rtr call rtr_accept_tx". This message is issued if the user has specified a part of an API routine name that matches more than one routine.
%RTR-F-BADDSKWRI, Unable to create/extend a journal file

Explanation: An attempt to create or extend a journal file on disk failed. Check that the disk(s) you are using for journals have sufficient free space.
%RTR-E-BADOP, Unable to complete operation @[A] line [A]

Explanation: Processing definition incomplete or undefined - report occurrence together with supporting information on current command to RTR Engineering.
%RTR-F-BADOUTFIL, Cannot open file specified with /OUTPUT

Explanation: The file specified with the /OUTPUT qualifier cannot be opened.
%RTR-E-BADPRTSTATE, Disallowed attempt to make an illegal or undefined partition state transition

Explanation: Returned following an attempt to make an illegal or undefined partition state transition.
%RTR-E-BADRTRINS, RTR is not correctly installed

Explanation: RTR is not correctly installed. Refer to the RTR Installation Guide for details of how to install RTR.
%RTR-E-BENOTALL032, Not all back-ends are at the minimum required version of V3.2

Explanation: Cannot perform the requested action since not all routers are at a minimum version of V3.2
%RTR-E-CANTSTOP, RTR could not be stopped

Explanation: Indicates that RTR cannot be stopped under present circumstances.
%RTR-E-CHAALROPE, Channel [A] is already open in this window

Explanation: An RTR channel of this name is already open in this window.
%RTR-F-CHANOTOPE, Channel not opened

Explanation: Channel was not opened. Check channels using the "SHOW CHANNEL" command.
%RTR-E-CHNALRDEC, Channel [A] is already declared

Explanation: The channel specified with the "/CHANNEL" qualifier on a "call rtr_open_channel" command has already been declared.
%RTR-E-CHNOTACTIVE, Channel does not have active transaction running

Explanation: No transaction currently active on channel. Occurs only in the V2 command environment, and is retained for compatibility with previous versions of RTR.
%RTR-E-CLASSREQ, At least one data-class definition required

Explanation: At least one data-class definition required in call to rtr_request_info.
%RTR-E-CLOSEPEND, Send failed due to close pending on channel - call rtr_receive_message

Explanation: Sending of data to the ACP has been aborted due to the presence of an undelivered mt_closed message on the channel. The application may retrieve the reason for the channel closure, by calling the receive_message verb to receive the mt_closed message.
%RTR-I-CMDIGNORE, Command ignored for defined facility role

Explanation: Indicates that the command is ignored on the executing node since it has no significance for the role defined.
%RTR-I-CMDNOTWRK, [A]-command not implemented

Explanation: This command is not currently implemented.
%RTR-E-CMDRESDEV, Command reserved to RTR development

Explanation: An unsupported command was issued.
%RTR-E-CMDTOOLON, Command too long

Explanation: Command was longer than 256 characters.
%RTR-E-CNTCRJOU, Cannot create journal directory

Explanation: Cannot create journal directory.
%RTR-S-COMARESEN, Commands sent by default to node [A]

Explanation: Displays the default nodes for command execution after issuing a "SET ENVIRONMENT" or "SHOW ENVIRONMENT" command.
%RTR-E-COMNOTFOU, Command not found [A], use RECALL/ALL

Explanation: Indicates that the command [A] requested with "RECALL" was not in the recall buffer.
%RTR-E-COMNUMMUS, Command number must be between 1 and [A]

Explanation: Indicates that the command number requested with "RECALL" was not in the allowed range (1 to [A]).
%RTR-F-CONFLICT, Illegal combination of command elements - check documentation n [A]

Explanation: Two or more keywords, qualifiers or parameters that cannot be used in in combination have been in the same command line.
%RTR-I-DEQDATA, Received data ([A] bytes) [A]

Explanation: Displays the dequeued data [B] and its length in bytes [A].
%RTR-F-DFSDISK, Disk is served by DFS

Explanation: An attempt was made to create a journal on a disk served by DFS. RTR does not support journals on DFS supported disks.
%RTR-I-DISABMOD, [A] mode disabled

Explanation: Displays the name [A] of the mode that was disabled after issuing a "SET MODE" command.
%RTR-S-DISITMCLR, [A] display item(s) cleared

Explanation: Indicates how many display items [A] were successfully cleared after issuing a CLEAR DISPLAY command.
%RTR-W-DISKALL, Disk is not available to RTR

Explanation: An attempt was made to create a journal on a disk which is allocated to a different process.
%RTR-W-DISKMNTVER, Disk is currently under mount verification

Explanation: An attempt was made to create a journal on a disk which is in mount verification. Try later.
%RTR-W-DISKMOUFOR, Disk is mounted foreign

Explanation: An attempt was made to create a journal on a disk which is mounted foreign. Please check disk for proper mount status.
%RTR-W-DISKNOTMOU, Disk is not mounted

Explanation: An attempt was made to create a journal on a disk which is not mounted. Please check disk for proper mount status.
%RTR-W-DISKSSM, Disk is member of shadow set

Explanation: An attempt was made to create a journal on a disk which is a member of a shadow set. RTR cannot locate journal on individual shadow set members.
%RTR-W-DISKSWL, Disk is software write locked

Explanation: An attempt was made to create a journal on a disk which is software write locked.
%RTR-E-DSKNOTSET, Specified disk not part of the journal disk set

Explanation: A disk was specified as part of a MODIFY JOURNAL command which was not part of the original disk set specified in the CREATE JOURNAL command.
%RTR-E-DTXNOSUCHRM, There is no such RM registered

Explanation: There is no such RM registered.
%RTR-W-DTXREADONLY, The transaction branch was read only and has been committed

Explanation: The RM will simply return an warning indicating the transaction branch was read-only and has been committed already.
%RTR-E-DTXRMBUSY, DTX RM is still in use by RTR

Explanation: the DTX RM is still referenced by at least one RTR facility or open channel.
%RTR-E-DTXRMEXISTS, The DTX RM has already been registered

Explanation: The RM has already been registered.
%RTR-E-DTXTOOMANYRMS, Too many RMs or instances of an RM have been registered

Explanation: The RTR ACP has registered too many (> 16) RM instances.
%RTR-F-DUPJOUFIL, Duplicate RTR journal file found - remove duplicate file or CREATE JOURNAL /SUPERSEDE

Explanation: A duplicate RTR journal file has been found. This status may be returned by the CREATE FACILITY and SHOW JOURNAL commands.

Probable cause:

System management error. A user has copied a journal file, or a disk containing a journal file. RTR can now see both the original and the copy and does not know which to use.

Corrective action, either:

(a) Check the log for the relevant filenames, and delete or move the duplicate journal file, or

(b) Reissue the CREATE JOURNAL /SUPERSEDE command (in this case any recovery information in the old journal is lost).

%RTR-E-DUPLPARTNAME, Duplicate partition name

Explanation: Duplicate partition argument.
%RTR-E-DUPLRMNAME, Duplicate rm partition name

Explanation: Duplicate partition argument.
%RTR-E-DUPNODNAM, Duplicate node name, [A]

Explanation: The node name list specified with the "/FRONTEND", "/ROUTER" or "/BACKEND" qualifiers on an "CREATE FACILITY" command contained the node name [A] more than once.
%RTR-E-EMPTYREQ, Request_info list is empty ...

Explanation: Empty list supplied to rtr_request_info.
%RTR-I-ENABMOD, [A] mode enabled

Explanation: Displays the name [A] of the mode that was enabled after issuing a "SET MODE" command.
%RTR-E-ENODNANAM, DECnet definition required, but not found for node [A]

Explanation: A node name was specified in a context that required a successful lookup for the DECnet address, but none was available. This can occur when DECnet is explicitly specified through use of a node name prefix ("dna."), or when DECnet is the only enabled network transport. Check the network node name database on the local node, and the network name server (DNS).
%RTR-E-ENOIPNAM, IP definition required, but no host definition found for [A]

Explanation: A host name was specified in a context that required a successful lookup for the IP address, but none was available. This can occur when TCP is explicitly specified through use of a node name prefix ("tcp."), or when IP networking is the only enabled network transport. Check the host name database on the local node, and the network name server (DNS).
%RTR-F-ENOTRANSPORTS, No network transports available

Explanation: No network transport are available. Most likely cause is the manipulation of the transport protocols allowed to RTR.
%RTR-F-ERRACCDIR, Directory [A], cannot be accessed or opened

Explanation: A directory cannot be accessed or opened.
%RTR-E-ERRACCFIL, Error accessing file [A]

Explanation: Displays the name [A] of a file that the RTR utility was unable to access.
%RTR-E-ERRACCMBX, Error accessing mailbox

Explanation: An error occurred whilst accessing a mailbox. The subsequent message gives more details.
%RTR-E-ERRACCNOD, Error accessing node [A]

Explanation: An error occurred whilst accessing node [A]. If you were using the /NODE or /CLUSTER qualifier to issue a remote command please check that you are able to execute simple non-Rtr remote shell or DECnet commands on the remote node. Rtr remote commands will not work unless remote shell software is installed and proxy and rhost settings are correctly configured. Also check that both nodes have the same RTR_PREF_PROT value on platforms that can use both DECnet and TCP/IP.
%RTR-E-ERRACCTAB, Error accessing tables

Explanation: Indicates that the configuration tables could not be accessed. The subsequent message gives more details.
%RTR-E-ERRCREMBX, Error creating mailbox

Explanation: An error occurred whilst creating a mailbox. The subsequent message gives more details.
%RTR-E-ERRDELMBX, Error deleting mailbox

Explanation: An error occurred whilst deleting a mailbox. The subsequent message gives more details.
%RTR-E-ERRGETNOD, Error obtaining information for node [A]

Explanation: An error occurred whilst trying to look up node [A] in the DECnet database. The subsequent message gives more details.
%RTR-E-ERRINIACS, Unable to initialize tables

Explanation: Indicates that the configuration tables could not be initialized. The subsequent message gives more details.
%RTR-F-ERRJOUNAM, Error in journal file name - CREATE JOURNAL /SUPERSEDE and submit SPR

Explanation: An RTR journal file has been found which has an incorrect name format. This is probably an RTR bug, submit an SPR. This status may be returned by the CREATE FACILITY and SHOW JOURNAL commands.

Reissue the RTR CREATE JOURNAL command before restarting RTR.

%RTR-E-ERROPEFIL, Error opening file [A]

Explanation: Displays the name [A] of a file that the RTR utility was unable to open.
%RTR-F-ERROPEJOU, Error opening journal file, stv: [A]

Explanation: An error occurred while opening a journal file.
%RTR-E-ERRSTAACP, Unable to start ACP

Explanation: The RTR ACP process could not be started when a "START RTR" command was issued. The subsequent message gives more details.
%RTR-E-ERRSTARCH, Unable to start remote client handler

Explanation: The RTR remote client handler process could not be started when a "START REMOTE_CLIENT_HANDLER" command was issued. The subsequent message gives more details.
%RTR-E-EVTNAMILL, Unknown event name, [A]

Explanation: The "/EVENT" qualifier on the "open channel" command specified an unknown event name.
%RTR-E-EXPSYNILL, Expression has illegal syntax, [A] expected n/[A]/

Explanation: The expression is invalid because token [A] was expected but [B] was found.
%RTR-E-EXPTOOCOM, Expression too complex n[A]

Explanation: The expression [A] is too complex to evaluate. Please submit an SPR.
%RTR-S-FACADDED, Facility [A] added

Explanation: Displays the name of the facility that was successfully created after issuing an "CREATE FACILITY" command.
%RTR-E-FACALREXI, Facility already exists, [A]

Explanation: The facility [A] specified with the "CREATE FACILITY" command already exists.
%RTR-S-FACCREATED, Facility [A] created

Explanation: Displays the name [A] of the facility that was successfully created after issuing a "CREATE FACILITY" command.
%RTR-S-FACDELETE, Facility [A] deleted

Explanation: Displays the name of the facility that has been deleted after issuing a "DELETE FACILITY" command.
%RTR-S-FACEXTENDED, Facility [A] extended

Explanation: Displays the name [A] of the facility that was successfully extended (or created) after issuing an "EXTEND FACILITY" command.
%RTR-E-FACNAMBLA, Facility name is blank

Explanation: An empty string was specified where a facility name was expected.
%RTR-E-FACNAMILL, Facility name [A] contains illegal character "[A]"

Explanation: Facility name [A] contains the illegal character [B]. Legal characters are capital letters ("A" to "Z"), numbers ("0" to "9"), dollar ("$") and underscore ("_").
%RTR-E-FACNAMLON, Facility name [A] is longer than 30 characters

Explanation: Facility name [A] is too long.
%RTR-E-FACNAMSTA, Facility name [A] does not start with a letter

Explanation: Facility name [A] does not start with a capital letter ("A" to "Z").
%RTR-E-FACTABFUL, The FAC table is full

Explanation: This message is displayed when an "CREATE FACILITY" command is issued. It indicates that the maximum number of FACILITY to LINK relations has been reached.
%RTR-S-FACTRIMMED, Facility [A] trimmed

Explanation: Displays the name [A] of the facility that was successfully trimmed after issuing a "TRIM FACILITY" command.
%RTR-E-FDBTABFUL, The FDB table is full

Explanation: This message is displayed when an "CREATE FACILITY" command is issued. It indicates that the maximum number of facilities has already been reached.
%RTR-E-FENAMELONG, Frontend name string length greater than RTR_MAX_FE_NAM_LEN

Explanation: Status return indicating that the supplied value for the frontend name string exceeded the permitted maximum of RTR_MAX_FE_NAM_LEN characters.
%RTR-E-FLDNFND, Field [A] not found

Explanation: Field not found in call to rtr_request_info.
%RTR-I-FORCEDEXI, Forcing RTR application exit, process [A], PID [A]

Explanation: Displays the name [A] and PID [B] of the processes that were forced to exit due to the execution of a "STOP RTR" command.
%RTR-F-FUNCNOTSUP, Function not supported

Explanation: Function not supported.
%RTR-I-GRPMODCHG, Group changed from [A] to [A]

Explanation: RTR group changed from [A] to [B]
%RTR-I-HIGBNDHEX, High bound is [A] (hex)

Explanation: Displays the high bound of the server key range.
%RTR-E-HLBNCPTBL, Format of help library [A] is unknown

Explanation: The specified help library has an unknown format.
%RTR-I-HLPNOTFND, No help available (help file [A] not found)

Explanation: The help file specified by the RTRHELP environment variable cannot be found or cannot be opened.
%RTR-E-ILLDEVTYP, Device [A] is unsuitable for journals

Explanation: RTR can only create its journal files on directory structured devices. Re-issue the "CREATE JOURNAL" command specifying a disk.
%RTR-E-ILLPARTCHAR, Legal characters are alphanumeric and under-score

Explanation: Illegal chars in partition name argument.
%RTR-E-ILLREMDEV, Device [A] contains a node specification

Explanation: RTR cannot create its journal files on remote systems. Re-issue the "CREATE JOURNAL" command for local disk.
%RTR-E-INSUFPRIV, Insufficient privileges to run RTR

Explanation: More privileges required to run the RTR utility.
%RTR-F-INSVIRMEM, Insufficient virtual memory

Explanation: The application was unable to allocate additional virtual memory.
%RTR-F-INVCHANAM, Invalid chanam argument

Explanation: Invalid chanam argument.
%RTR-F-INVCHANNEL, Invalid channel argument

Explanation: Invalid channel specified.
%RTR-F-INVDEVNAM, Invalid device name length

Explanation: Invalid device name length.
%RTR-F-INVDSDEF, Msglen not consistent with len derived from msgfmt

Explanation: Invalid DSDEF format argument.
%RTR-F-INVEVTNUM, Invalid evtnum argument

Explanation: Invalid evtnum argument.
%RTR-F-INVEVTRAN, Invalid evtnum range

Explanation: Invalid evtnum range.
%RTR-E-INVFILNAM, Invalid file name, [A]

Explanation: The specified filename [A] is invalid.
%RTR-F-INVFL4CLI, Invalid flag for client channel

Explanation: Invalid flag for client channel.
%RTR-F-INVFL4SRV, Invalid flag for server channel

Explanation: Invalid flag for server channel.
%RTR-F-INVFLAGS, Invalid flags argument

Explanation: Invalid flags argument.
%RTR-F-INVJOINTXID, Invalid join transaction argument

Explanation: If the RTR_F_OPE_FOREIGN_TM flag was specified in the call to rtr_open_channel, then the call to rtr_start_tx requires a join TX parameter. Also, the formatID field of the join TXID must be set to a valid value (not RTR_XID_FORMATID_NONE).
%RTR-F-INVKSLENGTH, Invalid ks_length argument

Explanation: Invalid ks_length argument.
%RTR-F-INVKSTYPE, Invalid ks_type argument

Explanation: Invalid ks_type argument.
%RTR-F-INVMSGFMT, Invalid format argument

Explanation: Invalid format argument.


Previous Next Contents Index