.ad 8
.bm 8
.fm 4
.bt $Copyright (c) 2000-2004 SAP AG$$Page %$
.tm 12
.hm 6
.hs 3
.tt 1 $SQL$Project Distributed Database System$VPC15$
.tt 2 $$$
.TT 3 $$Analyse-Param-Options$2000-09-05$
***********************************************************
.nf

.nf


    ========== licence begin  GPL
    Copyright (c) 2000-2004 SAP AG

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    ========== licence end

.fo


.fo
.nf
.sp
MODULE  : Analyse-Parameter-Options
=========
.sp
Purpose : Analysed  all Precompiler Parameter
          and Optionens from different Bs-systems.
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :
 
        PROCEDURE
              p15precomoptionsget (VAR apc : tpc_globals);
 
        PROCEDURE
              p15writepcargs (VAR apc : tpc_globals;
                    pos : integer);
 
.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
 
        FROM
              RTE_driver       : VEN102;

        PROCEDURE
              sqlSetOptionEncodingUTF8 (isUTF8encoded : boolean);
 
        PROCEDURE
              sqlarg3 (VAR user_params : tsp4_xuser_record ;
                    VAR password    : tsp00_Pw ;
                    VAR options     : tsp4_args_options ;
                    VAR xusertype   : tsp4_xuserset;
                    VAR errtext     : tsp00_ErrText;
                    VAR ok          : boolean);
 
        PROCEDURE
              sqlallocat (len : tsp00_Int4;
                    VAR bufpointer : tpc_partbufptr;
                    VAR ok  : boolean);
 
        PROCEDURE
              sqlfree (sfpointer : tpc_partbufptr);
 
      ------------------------------ 
 
        FROM
              Precompiler_Syntax_Erkennung : VPC10 ;
 
        PROCEDURE
              p10up1casebuf (VAR buf : tsp4_sqlmode_name ;
                    lwb : integer;
                    upb : integer);
 
      ------------------------------ 
 
        FROM
              Kommunikation mit Ein-Ausgabeger?ate : VPC11;
 
        PROCEDURE
              p11precomerror (VAR apc : tpc_globals;
                    error : tpc_pre_errors);
 
      ------------------------------ 
 
        FROM
              SQL_runtime_routinen_init   : VPR01e;
 
        PROCEDURE
              pr01eInitFileName(VAR filename : tsp00_VFilename);
 
         FUNCTION
              pr01eIsEmptyFileName(filename : tsp00_VFilename) : boolean;
 
     ------------------------------ 
 
        FROM
              Runtime-Stringroutinen   : VPR05;
 
        PROCEDURE
              p05inttochr12 (int : integer;
                    VAR chr12 : tsp00_C12);
 
      ------------------------------ 
 
        FROM
              SQLDB-Auftrags-Schnittstelle   : VPR03;
 
        PROCEDURE
              p03encrypt (VAR clearname : tsp00_Name;
                    VAR crypt : tsp00_CryptPw);

      ------------------------------ 
 
        FROM
              Kernel_move_and_fill   : VGG101;
 
        PROCEDURE
              SAPDB_PascalForcedFill (
                    size        : tsp00_Int4;
                    m           : tsp00_MoveObjPtr;
                    pos         : tsp00_Int4;
                    len         : tsp00_Int4;
                    fillchar    : char);
 
        PROCEDURE
              SAPDB_PascalForcedMove (
                    source_upb  : tsp00_Int4;
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
        PROCEDURE
              s10mv (
                    source_upb  : tsp00_Int4;       
                    destin_upb  : tsp00_Int4;
                    source      : tsp00_MoveObjPtr;    
                    source_pos  : tsp00_Int4;
                    destin      : tsp00_MoveObjPtr;    
                    destin_pos  : tsp00_Int4;
                    length      : tsp00_Int4);
 
&       ifdef TRACE
 
      ------------------------------ 
 
        FROM
              C-Type-Checker-Module  : VPR102;
 
        PROCEDURE
              m90int  (layer : tsp00_ToolLayer;
                    nam : tsp00_Sname;
                    int : integer);
 
        PROCEDURE
              m90int2  (layer : tsp00_ToolLayer;
                    nam : tsp00_Sname;
                    int : tsp00_Int2);
 
        PROCEDURE
              m90name  (layer : tsp00_ToolLayer;
                    nam : tsp00_Name);
 
        PROCEDURE
              m90identifier  (layer : tsp00_ToolLayer;
                    nam : tsp00_KnlIdentifier);
 
        PROCEDURE
              m90hostname  (layer : tsp00_ToolLayer;
                    nam : tsp00_Sname;
                    h : tpr_hostname);
 
        PROCEDURE
              m90buf1 (layer : tsp00_ToolLayer;
                    VAR buf : tsp4_xuserset;
                    von,bis : integer);
 
        PROCEDURE
              m90buf2 (layer : tsp00_ToolLayer;
                    VAR buf : char;
                    von,bis : integer);
&       endif
 
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
        PROCEDURE
              sqlallocat;
 
              tsp00_Int4        tsp00_Int4
              tsp00_ObjAddr     tpc_partbufptr
 
        PROCEDURE
              sqlfree;
 
              tsp00_BufAddr     tpc_partbufptr
 
        PROCEDURE
              p10up1casebuf;
 
              tsp00_Buf           tsp4_sqlmode_name
 
        PROCEDURE
              p03encrypt;
 
              tsp00_CryptName     tsp00_CryptPw
 
        PROCEDURE
              m90buf2;
 
              tsp00_Buf    char
 
        PROCEDURE
              p10up1casebuf ;
 
              tsp00_Buf tsp4_sqlmode_name
 
        PROCEDURE
              m90hostname;
 
              tsp00_VFilename   tpr_hostname
 
        PROCEDURE
              m90buf1;
 
              tsp00_Buf           tsp4_xuserset
 
        PROCEDURE
              sqlarg3;
 
              tsp00_Pw          tsp00_Pw
              tsp00_ErrText     tsp00_ErrText
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : 
.sp
.cp 3
Created : 1986-07-07
.sp
.cp 3
Version : 1998-04-09
.sp
.cp 3
Release :      Date : 2000-09-05
.sp
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Specification:
.cm  hier input specification
The Options will be analysed bei a LZU-Procedure sqlarg3.
The Option-Record Parameter of sqlarg3 is:
.nf
      (******** SQLARGS ********)
      sql_info_result = (
            info_ok,
            info_illegal_user,
            info_illegal_component);
      sql_component    = (sql_precompiler,
            sql_pc_runtime,
            sql_easy,
            sql_query,
            sql_dialog,
            sql_appl,
            sql_load,
            sql_util,
            sql_audit,
            sql_tools);
      tsp4_xusertype    = (sql_userdefault,
            sql_usermask,
            sql_userkey,
            sql_userparms);
      tsp4_command_mode = (sql_none,
            sql_run,
            sql_batch,
            sql_import,
            sql_export);
 
      sqlargs_options = RECORD
            opt_filler1    : int2;
            opt_filler2    : boolean;
            opt_component  : sql_component;
            CASE sql_component OF
                sql_precompiler :
                    (opt_modulefn      : c64;
                    opt_tracefile     : c64;
                    opt_prognamel     : int2;
                    opt_progname      : c18;
                    opt_modulenamel   : int2;
                    opt_modulename    : c18;
                    opt_tpmonidl      : int2;
                    opt_tpmonid       : c18;
                    opt_isolation     : int2;
                    opt_timeout       : int2;
                    opt_begmar        : int2;
                    opt_endmar        : int2;
                    opt_trace         : int2;
                    opt_sqlkind       : int2;
                    opt_datetime      : int2;
                    opt_dyn           : int2;
                    opt_tpmon         : int2;
                    opt_mode          : int2;
                    (* neu 4.10. *)
                    opt_extern        : int2;
                    opt_cansi         : int2;
                    opt_comp          : int2;
                    opt_prof          : int2;
                    (* neu 18.12.90 *)
                    opt_list          : boolean;
                    opt_precom        : boolean;
                    opt_comment       : boolean;
                    opt_traceswitch   : boolean;
                    opt_silent        : boolean;
                    opt_nowarn        : boolean;
                    opt_lineno        : boolean;
                    opt_lib           : boolean;
                    opt_quote         : boolean;
                    opt_decpoint      : boolean;
                    opt_quo           : char;
                    opt_point         : char);
                sql_pc_runtime:
                    (opt_rtracefile    : c64;
                    opt_risolation    : int2;
                    opt_rtimeout      : int2;
                    opt_rtrace        : int2;
                    opt_rprof         : int2;
                    opt_rnotracetime  : boolean;
                    opt_rtraceswitch  : boolean;
                    opt_rnosdf        : boolean;
                    opt_rfiller1      : boolean;
                    opt_ruser_args    : argline);
                sql_easy,
                sql_query,
                sql_dialog,
                sql_appl,
                sql_load,
                sql_util:
                    (opt_runfile       : c64;
                    opt_object_owner  : c18;
                    opt_object_name1  : c18;
                    opt_object_name2  : c18;
                    opt_parameter     : c132;
                    opt_d_isolation   : isolation_level;
                    opt_append        : boolean;
                    opt_prompt        : boolean;
                    opt_comm_mode     : sql_command_mode);
                sql_audit:
                    (opt_auditcontrol  : c64;
                    opt_logfile       : c64;
                    opt_auditoutput   : c64);
                sql_tools:
                    (opt_t_user_args   : argline);
                END;
            (*ENDCASE*)
            (******** communication ********)
.fo
.sp 3
The default Values are :
.sp 2
.nf
 
    sql_all_component :
                               |     VM-Syntax                |  default
 ------------------------------|------------------------------|--------------
                               | USER ( <username>,<password> |
                               |  <serverdb> , <servernode> ) |
        fuer dialog, query     | RUN  ( <run-input filename> )|
        fuer dialog, query     | BATCH (  <batch filename>  ) |
                               | ISOLEV ( <isolation level> ) |   = -1
                               | TIMEOUT ( <timeout> )        |   = 0
 
 
 
  CASE sql_component OF    ::  option_record
 
    sql_precompiler :
                               |    VM-Syntax                 |  default
 ------------------------------|------------------------------|--------------
   opt_modulefn      : c64;    |  <input-filename>            |
   opt_tracefile     : c64;    |  TRACEF ( <trace file name> )|   blankfn
   opt_prognamel     : int2;   |  <length of <progname>>      |
   opt_progname      : c18;    |  PROGRAM ( <progname> )      |   <modulename>
   opt_modulenamel   : int2;   |  <length of <modulename>>    |
   opt_modulename    : c18;    |  modulename of input-filename|   <modulename>
   opt_tpmonidl      : int2;   |  <length of <tpmonid>>       |
   opt_tpmonid       : c18;    |                              |   blankname
   opt_isolation     : int2;   |  ISOLEV   ( <level>   )      |    = -1
   opt_timeout       : int2;   |  TIMEOUT  ( <timeout> )      |    = 0
   opt_begmar        : int2;   |  MAR/GINS/( <beginmar>       |    = 0
   opt_endmar        : int2;   |           /,/  <endmar> )    |    = 0
   opt_trace         : int2;   |  TRACE    ::= 2              |    = 0
                               |  TRACEL   ::= 3              |
                               |  TROHNE   ::= 4              |
   opt_sqlkind       : int2;   |  DB2      ::= 2              |    = 1
   (* wird ?uber string        |  ANSI     ::= 3              |
     implementiert *)          |  ORACLE   ::= 4              |
                               |  SAPR3    ::= 5              |
   opt_datetime      : int2;   |  ISO      ::= 2              |    = 1
                               |  USA      ::= 3              |
                               |  EUR      ::= 4              |
                               |  JIS      ::= 5              |
   opt_dyn           : int2;   |  DYN      ::= 1              |    = 0
   opt_tpmon         : int2;   |  TPMON ( <tpmonid> )  ::= 1  |    = 0
                     TPMON ( <tpmonid> , C | CONVERSE )::= 2  |
                               |  TPMON (  AIM )       ::= 3  |
                               |  TPMON (  UTM )       ::= 4  |
                              TPMON (UTM, C | CONVERSE)::= 5  |
   opt_mode          : int2;   |                  sql_check   |    = 2
                               |  SYNTAX    ::= 1             |
                               |  NOCHECK   ::= 0             |
   opt_extern (*neu*): int2;   |  EXTERN    ::= 0             |    = 1
   opt_cansi  (*neu*): int2;   |  CANSI     ::= 1             |    = 0
   opt_comp   (*neu*): int2;   |  COMP      ::= 0             |    = 1
   opt_prof   (*neu*): int2;   |  PROF      ::= 0             |    = 1
.cp 10
   opt_list          : boolean;|  LIST                        |    false
   opt_precom        : boolean;|  PRECOM                      |    false
   opt_comment       : boolean;|  COMMENT                     |    false
   opt_traceswitch   : boolean;|  TRACESW                     |    false
   opt_silent        : boolean;|  SILENT                      |    false
   opt_nowarn        : boolean;|  NOWARN                      |    false
   opt_lineno        : boolean;|  LINENO                      |    false
   opt_lib           : boolean;|  LIB                         |    false
.cp 10
   opt_quote         : boolean;|  QUOTE ( SINGLE | DOUBLE )   |
                               |                 SINGLE       |    true
   opt_decpoint      : boolean;|  DECPOINT ( POINT | COMMA )  |
                               |                 POINT        |    true
   opt_quo           : char;   |   double  ::= "              |     '
   opt_point         : char;   |   comma   ::= ,              |     .
 
 
.cp 20
    sql_pc_runtime  :
                               |    VM-Syntax                 |  default
 ------------------------------|------------------------------|--------------
   opt_rtracefile    : c64;    |  TRACEF ( <trace file name> )|   blankfn
   opt_risolation    : int2;   |  ISOLEV   ( <level>   )      |    = -1
   opt_rtimeout      : int2;   |  TIMEOUT  ( <timeout> )      |    = 0
   opt_rtrace        : int2;   |  TRACE    ::= 2              |    = 0
                               |  TRACEL   ::= 3              |
                               |  TROHNE   ::= 4              |
   opt_rprof         : int2;   |  PROFILE  ::= 1              |    = 0
                               |  PROFPCR  ::= 2              |
   opt_rmfetch       : int2;   |  MFETCH <anz> ::= <anz> (0..18)|  = 1
   opt_rfiller       : int2;   |        empty                 |    = 0
   opt_rnotracetime  : boolean;|  NODATE                      |    false
   opt_rtraceswitch  : boolean;|  TRACESW                     |    false
   opt_rnosdf        : boolean;|  NOSDF                       |    false
   opt_rfiller1      : boolean;|        empty                 |    false
   opt_ruser_args    : argline;|                              |
 
 
 
.sp 4
PROCEDURE  P15PRECOMOPTIONSGET:
.sp 2
The Options from sqlargs3 will be set into the pcopts options record.
The describtion of the options_record look runtime enviroment of
release 3.0.00.
.sp 2
The following UNIX syntax is implemented:
.sp
.nf
      check nocheck    ::  -H  nocheck
            syntax     ::  -H  syntax
      comment          ::  -o
      compatible 2.4   ::  -C
      connect timeout  ::  -t  <timeout>
              user     ::  -u  <usern>,<passw>
      datetyp iso      ::  -D  iso
              usa      ::  -D  usa
              eur      ::  -D  eur
              jis      ::  -D  jis
      serverdb         ::  -d  <serverdb>,<servernode>
      decpoint comma   ::  -p
      dynamic link     ::  -Y
      extern           ::  -e
      help             ::  -h
      isolation lev    ::  -I  <isolation level>
      lib              ::  -L
      list             ::  -l
      lineno           ::  -n
      margins          ::  -m  <mbegin>,<mend>
      nowarning        ::  -w
      precom           ::  -c
      profile          ::  -R
      programname      ::  -P  <progname>
      quote  double    ::  -q
      cansi            ::  -E cansi
      sensitive up/low ::  -v
      silent           ::  -s
      sqlmode db2      ::  -S  db2
              ansi     ::  -S  ansi
              oracle   ::  -S  oracle
              sapr3    ::  -S  sapr3
      tpmon   cpc_aim      ::  -M  cpc_aim,<monid>
              cics     ::  -M  cics,<monid>
              pccics   ::  -M  pccics,<monid>
              cpc_utm      ::  -M  cpc_utm,<monid>
      trace filename   ::  -F   <tracefn>
      trace long       ::  -X
            short      ::  -T
            without    ::  -O
      xuserkey         ::  -x  <userkey>
 
  defaults : check,isolev(1),progn(fn),margins,datetyp(sqldb),sqlmode(sqldb)
 
.sp 2
The following VM syntax is implemented:
.sp
.nf
      check nocheck    ::  nocheck
            syntax     ::  syntax
      comment          ::  comment
      compatible 2.4   ::  comp
      connect timeout  ::  timeout ( <timeout> )
              user     ::  user ( <usern>,<passw> )
      datetyp iso      ::  iso
              usa      ::  usa
              eur      ::  eur
              jis      ::  jis
      serverdb         ::  user ( <usern>,<passw>,<serverdb>,<servernode> )
      decpoint comma   ::  decpoint ( comma) | decpoint (double )
      dynamic link     ::  dyn
      extern           ::  extern
      help             ::  help
      isolation lev    ::  isolev <isolation level>
      lib              ::  lib
      list             ::  list
      lineno           ::  lineno
      margins          ::  mar /gins/ ( <mbegin>,<mend> )
      nowarning        ::  nowarn
      precom           ::  precom
      profile          ::  profile
      programname      ::  program ( <progname> )
      quote  double    ::  quote ( double ) | quote ( single )
      cansi (reent)    ::  cansi
      sensitive up/low ::     --.--
      silent           ::  silent
      sqlmode db2      ::  db2
              ansi     ::  ansi
              oracle   ::  oracle
              sapr3    ::  sapr3
      tpmon   cpc_aim      ::  tpmon ( cpc_aim )
              cics     ::  tpmon ( <monid> )
              pccics   ::  tpmon ( <monid> , c | converse )
              cpc_utm      ::  tpmon ( cpc_utm )
      trace filename   ::  tracef ( <tracefn> )
      trace long       ::  tracel
            short      ::  trace
            ohne       ::  trohne
      xuserkey         ::  xuser ( <userkey> )
 
  defaults : check,isolev(1),progn(fn),margins,datetyp(sqldb),sqlmode(sqldb)
.fo
.sp 4
PROCEDURE  P15WRITEPCARGS:
.sp 2
The options will be writen into the *.pcl listing.
.sp 4
.CM *-END-* specification -------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
.sp 2
PROCEDURE p15precomoptionsget:
.sp 2
sqlarg3  :  xusertype  returncode
 
  -u         sql_userparms
  -x PROMPT  sql_usermask
  -x  ...    sql_userkey
   sonst     sql_userdefault
 
Defaultbelegung :
   user, password, serverdb und servernode = blank
 dh. bei sqluserparms noch Abfrage auf serverdb und servernode = blank
und dann DEFAULT user aufrufen.
 
sqlgetuser liefert aus ENV. serverdb und servernode, wenn Xuser-Datei
nicht vorhanden und not ok.
.sp 4
.CM *-END-* description ---------------------------------
.sp 2
***********************************************************
.sp
.cp 10
.nf
.oc _/1
Structure:
 
.CM *-END-* structure -----------------------------------
.sp 2
**********************************************************
.sp
.cp 10
.nf
.oc _/1
.CM -lll-
Code    :
 
 
(*------------------------------*) 
 
PROCEDURE
      p15precomoptionsget (VAR apc : tpc_globals);
 
CONST
      p15_max_packetsize = 10000000;
 
TYPE
      xuseralt   = (a, b);
 
VAR
      password   : tsp00_Name;
      errtext    : tsp00_ErrText;
      ok         : boolean;
      userkey    : boolean;
      error      : tpc_pre_errors;
      begmar     : tsp00_Int2;
      endmar     : tsp00_Int2;
      maxlen : tsp00_Int4;
 
BEGIN
WITH apc, sqlca, sqlxa, sqlrap^, rasqltap^, sqloap^,
     sqlgap^, gaentry [1]^,  gaopxuserrec, pcopts DO
    BEGIN
    error := cpc_pre_ok;
    SAPDB_PascalForcedFill (mxsp_c70, @errtext, 1, mxsp_c40, bsp_c1);
&   ifdef TRACE
    m90int  (pc,'sqlcabc     ',sqlca.sqlcabc);
    m90int2 (pc,'xainit      ',sqlxa.xainit);
    m90int2 (pc,'xacmdinit   ',sqlxa.xacmdinit);
    m90int2 (pc,'rasqlos     ',ord (rasqlos));
    m90int2 (pc,'ralang      ',ralang);
    m90int2 (pc,'opt_comment ',ord (opt_comment) );
&   endif
    SAPDB_PascalForcedFill (sizeof(pcargs) ,@pcargs, 1,
          sizeof(pcargs), bsp_c1);
    rasqlansi    := cpr_kind_empty;
    raactsession := 1;
    tatraceno := 0;
    pr01eInitFileName(tatracefn);
    pr01eInitFileName(oamodtracefn);
    tatracety := cpr_trace_off;
    gasqlconntyp := cpr_ci_implicit;
    gauseropset    := cpr_is_false;
    ranotrtimeoutp := cpr_is_false;
    raopprof       := cpr_is_false;
    userkey        := false;
    ok             := false ;
    opt_component  := sp4co_sql_precompiler;
    opt_tabformat  := false;
    opt_packetsize := 0;
    begmar         := opt_begmar;
    endmar         := opt_endmar;
    pcxuserset     := [];
&   ifdef TRACE
    m90int2 (pc,'opt_comment ',ord(opt_comment) );
    m90name (pc,'xu_dblang         ');
    m90buf2 (pc, xu_dblang[1], 1, 64);
&   endif
    sqlSetOptionEncodingUTF8 (true);
    sqlarg3 (gaopxuserrec, password, pcopts,
          pcxuserset, errtext, ok);
    IF  ok
    THEN
        WITH pccmdpart DO
            BEGIN
            IF  opt_packetsize = 0
            THEN
                partsizlen := mxpr_partbuf
            ELSE
                IF  opt_packetsize > p15_max_packetsize
                THEN
                    partsizlen := p15_max_packetsize
                ELSE
                    partsizlen := opt_packetsize;
                (*ENDIF*) 
            (*ENDIF*) 
            maxlen := partsizlen + 240;
            IF  partbufp <> NIL
            THEN
                IF  maxlen > partmaxlen
                THEN
                    BEGIN
                    sqlfree (partbufp);
                    partbufp := NIL;
                    END;
                (*ENDIF*) 
            (*ENDIF*) 
            IF  partbufp = NIL
            THEN
                BEGIN
                partmaxlen := maxlen;
                sqlallocat (partmaxlen, partbufp, ok);
                END;
            (*ENDIF*) 
            END;
        (*ENDWITH*)
&   ifdef TRACE
    (*ENDIF*) 
    m90name (pc,'xu_dblang         ');
    m90buf2 (pc, xu_dblang[1], 1, 64);
    IF  ok
    THEN
        m90name (pc,'sqlarg3 ok        ')
    ELSE
        m90name (pc,'sqlarg3 false     ');
    (*ENDIF*) 
    m90buf1 (pc, pcxuserset, 1, 2);
    IF  sp4xu_sql_userdefault IN pcxuserset
    THEN
        m90name (pc,'sql_userdefault   ');
    (*ENDIF*) 
    IF  sp4xu_sql_usermask IN pcxuserset
    THEN
        m90name (pc,'sql_usermask      ');
    (*ENDIF*) 
    IF  sp4xu_sql_userkey IN pcxuserset
    THEN
        m90name (pc,'sql_userkey       ');
    (*ENDIF*) 
    IF  sp4xu_sql_userparms IN pcxuserset
    THEN
        m90name (pc,'sql_userparm      ');
    (*ENDIF*) 
    IF  sp4xu_sql_servernode IN pcxuserset
    THEN
        m90name (pc,'sql_serverno      ');
    (*ENDIF*) 
    IF  sp4xu_sql_serverdb   IN pcxuserset
    THEN
        m90name (pc,'sql_serverdb      ');
    (*ENDIF*) 
    IF  sp4xu_sql_mode IN pcxuserset
    THEN
        m90name (pc,'sql_mode          ');
    (*ENDIF*) 
    IF  sp4xu_sql_cachelimit IN pcxuserset
    THEN
        m90name (pc,'sql_cachelim      ');
    (*ENDIF*) 
    IF  sp4xu_sql_timeout IN pcxuserset
    THEN
        m90name (pc,'sql_timeout       ');
    (*ENDIF*) 
    IF  sp4xu_sql_isolation IN pcxuserset
    THEN
        m90name (pc,'sql_isolatio      ');
    (*ENDIF*) 
    IF  sp4xu_sql_params IN pcxuserset
    THEN
        m90name (pc,'sql_params        ');
    (*ENDIF*) 
    IF  sp4xu_sql_dblang IN pcxuserset
    THEN
        m90name (pc,'sql_dblang        ');
    (*ENDIF*) 
    m90int2 (pc,'opt_comment ',ord(opt_comment) );
    m90int2 (pc,'opt_unicode ',ord(opt_unicode) );
    m90buf2 (pc, xu_user [1], 1, 100);
    m90buf2 (pc, password [1], 1, 18);
&   endif
    IF  NOT (pcxuserset = [])
    THEN
        gauseropset := cpr_is_true;
    (*ENDIF*) 
    userkey := sp4xu_sql_userkey IN pcxuserset ;
    IF  ok
    THEN
        BEGIN
        IF  userkey OR (sp4xu_sql_userparms IN pcxuserset)
        THEN
            BEGIN
            IF  NOT userkey
            THEN
                BEGIN
                IF  (gaopxuserrec.xu_user <> bsp_knl_identifier)
                THEN
                    p03encrypt (password, xu_password)
                ELSE
                    p03encrypt (password, xu_passwordUCS2);
                (*ENDIF*) 
                END;
            (*ENDIF*) 
            gauseropset:= cpr_is_true;
            END
        ELSE
            BEGIN
            xu_user := bsp_knl_identifier;
            xu_userUCS2[1] := ' ';
            xu_userUCS2[2] := '\0';
            END;
        (*ENDIF*)
&       ifdef TRACE
        m90buf2 (pc, password [1], 1, 18);
        m90buf2 (pc, xu_key  [1], 1, 180);
&       endif
        IF  userkey OR (sp4xu_sql_servernode IN pcxuserset)
        THEN
            BEGIN
            gauseropset    := cpr_is_true;
            END
        ELSE
            xu_servernode:= bsp_nodeid;
        (*ENDIF*) 
        IF  userkey OR (sp4xu_sql_serverdb   IN pcxuserset)
        THEN
            BEGIN
            gauseropset  := cpr_is_true;
            END
        ELSE
            xu_serverdb  := bsp_dbname;
        (*ENDIF*) 
        xu_cachelimit := -1;
        IF  userkey OR (sp4xu_sql_timeout    IN pcxuserset)
        THEN
            gauseropset := cpr_is_true
        ELSE
            xu_timeout := -1;
        (*ENDIF*) 
        pcfilen    :=  opt_modulename;
        IF  sp4xu_sql_mode IN pcxuserset
        THEN
            gaxuserrec.xu_sqlmode  := xu_sqlmode;
        (*ENDIF*) 
        p10up1casebuf (gaxuserrec.xu_sqlmode, 1, 8);
        IF  gaxuserrec.xu_sqlmode = bsp_c8
        THEN
            sqldbmode := cpr_kind_internal
        ELSE
            BEGIN
            CASE gaxuserrec.xu_sqlmode [1] OF
                'S' :
                    IF  gaxuserrec.xu_sqlmode = 'SQL-DB  '
                    THEN
                        sqldbmode := cpr_kind_internal
                    ELSE
                        IF  gaxuserrec.xu_sqlmode = 'SAPR3   '
                        THEN
                            sqldbmode := cpr_kind_sapr3
                        ELSE
                            BEGIN
                            errtext := 'SQLMODE WRONG IN XUSER DATEI OR OPTION  ';
                            error :=  cpc_invalid_option;
                            END;
                        (*ENDIF*) 
                    (*ENDIF*) 
                'D' :
                    IF  gaxuserrec.xu_sqlmode = 'DB2     '
                    THEN
                        sqldbmode := cpr_kind_db2
                    ELSE
                        BEGIN
                        errtext := 'SQLMODE WRONG IN XUSER DATEI OR OPTION  ';
                        error :=  cpc_invalid_option;
                        END;
                    (*ENDIF*) 
                'A', 'I' :
                    IF  gaxuserrec.xu_sqlmode = 'ANSI    '
                    THEN
                        BEGIN
                        sqldbmode := cpr_kind_internal;
                        rasqlansi  := cpr_kind_ansi;
                        END
                    ELSE
                        IF  gaxuserrec.xu_sqlmode = 'ANSIORA '
                        THEN
                            BEGIN
                            sqldbmode := cpr_kind_oracle;
                            rasqlansi  := cpr_kind_ansi;
                            END
                        ELSE
                            IF  (gaxuserrec.xu_sqlmode = 'ADABAS  ')
                                OR  (gaxuserrec.xu_sqlmode = 'INTERNAL')
                            THEN
                                sqldbmode := cpr_kind_internal
                            ELSE
                                BEGIN
                                errtext := 'SQLMODE WRONG IN XUSER DATEI OR OPTION  ';
                                error :=  cpc_invalid_option;
                                END;
                            (*ENDIF*) 
                        (*ENDIF*) 
                    (*ENDIF*) 
                'O' :
                    IF  gaxuserrec.xu_sqlmode = 'ORACLE  '
                    THEN
                        sqldbmode := cpr_kind_oracle
                    ELSE
                        BEGIN
                        errtext := 'SQLMODE WRONG IN XUSER DATEI OR OPTION  ';
                        error :=  cpc_invalid_option;
                        END;
                    (*ENDIF*) 
                OTHERWISE:
                    BEGIN
                    errtext := 'SQLMODE WRONG IN XUSER DATEI OR OPTION  ';
                    error :=  cpc_invalid_option;
                    sqldbmode := cpr_kind_internal;
                    END;
                END;
            (*ENDCASE*) 
            END;
        (*ENDIF*) 
        radbmode  := sqldbmode ;
        IF  userkey OR (sp4xu_sql_isolation  IN pcxuserset)
        THEN
            BEGIN
            gauseropset    := cpr_is_true;
            gamodisolation := xu_isolation;
            IF  xu_isolation <> cpr_lo_iso_default
            THEN
                BEGIN
                IF  (sqldbmode = cpr_kind_internal)
                    AND (rasqlansi = cpr_kind_empty)
                THEN
                    BEGIN
                    IF  NOT (xu_isolation in [cpr_lo_isolev0, cpr_lo_isolev9,
                        cpr_lo_isolev1, cpr_lo_isolev2,
                        cpr_lo_isolev3, cpr_lo_isolev4,
                        cpr_lo_isolev10, cpr_lo_isolev15,
                        cpr_lo_isolev20, cpr_lo_isolev30])
                    THEN
                        BEGIN
                        errtext := 'ISOLATION LEVEL WRONG                   ';
                        error :=  cpc_invalid_option;
                        END;
                    (*ENDIF*) 
                    END;
                (*ENDIF*) 
                IF  (rasqlansi =  cpr_kind_ansi)
                THEN
                    BEGIN
                    IF  NOT (xu_isolation in [cpr_lo_isolev0, cpr_lo_isolev1,
                        cpr_lo_isolev2, cpr_lo_isolev3])
                    THEN
                        BEGIN
                        errtext := 'ISOLATION LEVEL WRONG IN ANSI MODE      ';
                        error :=  cpc_invalid_option;
                        END;
                    (*ENDIF*) 
                    END;
                (*ENDIF*) 
                END;
            (*ENDIF*) 
            END;
        (*ENDIF*) 
        IF  (    (opt_tracefile[1] = 'p') OR (opt_tracefile[1] = 'P'))
            AND ((opt_tracefile[2] = 'i') OR (opt_tracefile[2] = 'I'))
            AND ((opt_tracefile[3] = 'd') OR (opt_tracefile[3] = 'D'))
        THEN
            BEGIN
            IF  opt_trace = cpr_trace_empty
            THEN
                opt_trace := cpr_trace_off;
            (*ENDIF*) 
            END
        ELSE
            IF NOT pr01eIsEmptyFileName(opt_tracefile)
            THEN
                BEGIN
                IF  opt_trace = cpr_trace_empty
                THEN
                    opt_trace := cpr_trace_formal;
                (*ENDIF*) 
                END;
            (*ENDIF*) 
        (*ENDIF*) 
        sqldatetime :=  opt_datetime;
        IF  opt_tabformat
            AND (sqlca.sqlrap^.ralang <> cpr_la_cobmic)
            AND (sqlca.sqlrap^.ralang <> cpr_la_cobol)
        THEN
            BEGIN
            errtext := 'EXTEND SOURCE CANNOT BE SPECIFIED       ';
            error :=  cpc_invalid_option;
            END;
        (*ENDIF*) 
        IF  opt_tabformat AND ((sqlca.sqlrap^.ralang = cpr_la_cobmic)
            OR (sqlca.sqlrap^.ralang = cpr_la_cobol))
        THEN
            IF  (opt_begmar = 0) OR (opt_endmar = 0)
            THEN
                opt_begmar := 1;
            (*ENDIF*) 
        (*ENDIF*) 
        IF  (opt_begmar = 0) AND (opt_endmar = 0)
        THEN
            BEGIN
            opt_begmar :=  begmar;
            opt_endmar :=  endmar;
            END
        ELSE
            IF  sqlca.sqlrap^.ralang in [cpr_la_c]
            THEN
                BEGIN
                errtext := 'MARGINS CANNOT BE SPECIFIED             ';
                error :=  cpc_invalid_option;
                END;
            (*ENDIF*) 
        (*ENDIF*) 
        IF  opt_lineno
        THEN
            BEGIN
            pclno.lnoinp  := cpr_is_true;
            pclno.lnoout  := cpr_is_true;
            END;
        (*ENDIF*) 
        pcvf.vffn [cpc_inputfile] .vffilen := opt_modulefn;
&       ifdef TRACE
        m90int2 (pc,'actual_sess ',raactsession);
        m90int2 (pc,'modlocks iso',gamodisolation);
        m90int2 (pc,'xuopcachelim',xu_cachelimit );
        m90int2 (pc,'xuoptimeout ',xu_timeout);
        m90int2 (pc,'tatracety   ',tatracety);
        m90hostname  (pc, 'opt_tracefil', opt_tracefile);
        m90int2 (pc,'opt_prognl  ',opt_prognamel  );
        m90identifier (pc, opt_progname);
        m90int2 (pc,'opt_modulele',opt_modulenamel   );
        m90identifier (pc, opt_modulename);
        m90int2 (pc,'opt_modnl   ',opt_modulenamel   );
        m90identifier (pc, opt_modulename);
        m90int2 (pc,'opt_check   ',opt_mode   );
        m90int2 (pc,'opt_precom  ',ord(opt_precom)  );
        m90int2 (pc,'opt_list    ',ord(opt_list )   );
        m90int2 (pc,'opt_lib     ',ord(opt_lib)     );
        m90int2 (pc,'opt_comment ',ord(opt_comment) );
        m90int2 (pc,'opt_extern  ',opt_extern  );
        m90int2 (pc,'opt_quote   ',ord (opt_quote)   );
        m90int2 (pc,'opt_decpoint',ord(opt_decpoint));
        m90int2 (pc,'xu_isolation',xu_isolation );
        m90int2 (pc,'opt_trace   ',opt_trace   );
        m90int2 (pc,'opt_begmar  ',opt_begmar);
        m90int2 (pc,'opt_endmar  ',opt_endmar  );
        m90int2 (pc,'opt_tpmon   ',opt_tpmon   );
        m90int2 (pc,'opt_dyn     ',opt_dyn     );
        m90int2 (pc,'sqldbmode   ',sqldbmode  );
        m90int2 (pc,'sqldatetime ',sqldatetime);
        m90int2 (pc,'opt_cansi   ',opt_cansi   );
        m90int2 (pc,'opt_comp    ',opt_comp   );
        m90int2 (pc,'opt_prof    ',opt_prof    );
        IF  opt_tabformat
        THEN
            m90int2 (pc,'tabform=true', 0         );
        (*ENDIF*) 
        IF  opt_nowarn
        THEN
            m90int2 (pc,'nowarn=true ', 0         );
        (*ENDIF*) 
        IF  opt_silent
        THEN
            m90int2 (pc,'silent=true ', 0         );
&       endif
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  (NOT ok) OR (error <> cpc_pre_ok)
    THEN
        BEGIN
        (* error handling *)
        s10mv (ERRTEXT_MXSP00, mxsp_c70, @errtext, 1,
              @sqlca.sqlerrmc, 1, mxsp_c40);
        sqlca.sqlerrml  := mxsp_c40;
&       ifdef TRACE
        m90buf2 (pc,errtext [1], 1, 40);
&       endif
        p11precomerror (apc, cpc_invalid_option);
        END;
    (*ENDIF*) 
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      p15writepcargs (VAR apc : tpc_globals;
            pos : integer);
 
VAR
      nam, namv  : tsp00_Name;
      argl       : integer;
&     ifdef TRACE
      password   : tsp00_Name;
&     endif
 
BEGIN
WITH apc, pcopts, sqlca, sqlrap^, sqlgap^, gaentry [1]^ DO
    BEGIN
    argl := 0;
    SAPDB_PascalForcedFill (sizeof(pcargs) ,@pcargs, 1,
          sizeof(pcargs), bsp_c1);
    IF  pos = 1
    THEN
        BEGIN
        IF  sp4xu_sql_servernode IN pcxuserset
        THEN
            BEGIN
&           ifdef TRACE
            m90buf2 (pc,gaopxuserrec.xu_servernode [1], 1, 64);
&           endif
            nam  := 'SERVERNODE(       ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, mxsp_name);
            argl := argl + mxsp_name;
            WHILE pcargs [argl] = bsp_c1 DO
                argl := argl - 1;
            (*ENDWHILE*) 
            (*        s10mv (mxsp_name, mxsp_name,
                  gaopxuserrec.xu_servernode, 1,
                  namv, 1, mxsp_name);
                  *)
            s10mv (NODEID_MXSP00, sizeof(pcargs), @gaopxuserrec.xu_servernode, 1,
                  @pcargs, argl+1, NODEID_MXSP00);
            argl := argl + NODEID_MXSP00;
            WHILE pcargs [argl] = bsp_c1 DO
                argl := argl - 1;
            (*ENDWHILE*) 
            pcargs [argl + 1] := ')';
            pcargs [argl + 2] := ',';
            argl := argl + 2;
            END;
        (*ENDIF*) 
        IF  sp4xu_sql_serverdb IN pcxuserset
        THEN
            BEGIN
&           ifdef TRACE
            m90buf2 (pc,gaopxuserrec.xu_serverdb [1], 1, 18);
&           endif
            nam  := 'SERVERDB(         ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, mxsp_name);
            argl := argl + mxsp_name;
            WHILE pcargs [argl] = bsp_c1 DO
                argl := argl - 1;
            (*ENDWHILE*) 
            s10mv (mxsp_name, sizeof(pcargs), @gaopxuserrec.xu_serverdb, 1,
                  @pcargs, argl+1, mxsp_name);
            argl := argl + mxsp_name;
            WHILE pcargs [argl] = bsp_c1 DO
                argl := argl - 1;
            (*ENDWHILE*) 
            pcargs [argl + 1] := ')';
            pcargs [argl + 2] := ',';
            argl := argl + 2;
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  pos = 2
    THEN
        BEGIN
        IF  sp4xu_sql_userkey IN pcxuserset
        THEN
            BEGIN
            nam := 'USERKEY(          ';
            s10mv (XUSERKEY_MXSP00, mxsp_name, @gaxuserrec.xu_key, 1,
                  @namv, 1, mxsp_name);
            p15putname_to_args (apc, argl, nam, namv);
            END;
        (*ENDIF*) 
        IF  sp4xu_sql_userparms IN pcxuserset
        THEN
            BEGIN
            nam := 'OPTIONUSER(       ';
            s10mv (mxsp_c64, mxsp_name, @gaopxuserrec.xu_user, 1,
                  @namv, 1, mxsp_name);
            p15putname_to_args (apc, argl, nam, namv);
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  pos = 3
    THEN
        BEGIN
        IF  (sp4xu_sql_isolation  IN pcxuserset)
        THEN
            BEGIN
            nam := 'ISOLEV(           ';
            p15pint2_to_args (apc, argl, nam, gaopxuserrec.xu_isolation);
            END;
        (*ENDIF*) 
        IF  sp4xu_sql_dblang IN pcxuserset
        THEN
            BEGIN
            nam := 'DBLANG (          ';
            s10mv (mxsp_c64, mxsp_name, @gaopxuserrec.xu_dblang, 1,
                  @namv, 1, mxsp_name);
            p15putname_to_args (apc, argl, nam, namv);
            END;
        (***    IF  (sp4xu_sql_cachelimit  IN pcxuserset)
              THEN
              BEGIN
              nam := 'CACHELIMIT(       ';
              p15pint4_to_args (apc, argl, nam, gaopxuserrec.xu_cachelimit);
              END ;
              ******)
        (*ENDIF*) 
        IF  (sp4xu_sql_timeout    IN pcxuserset)
        THEN
            BEGIN
            nam := 'TIMEOUT(          ';
            p15pint2_to_args (apc, argl, nam, gaopxuserrec.xu_timeout);
            END;
        (*ENDIF*) 
        IF  opt_endmar <> 0
        THEN
            BEGIN
            nam := 'MARGINS(          ';
            p15pint2_to_args (apc, argl, nam, opt_begmar);
            argl := argl - 2;
            nam := ',                 ';
            p15pint2_to_args (apc, argl, nam, opt_endmar);
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  pos = 4
    THEN
        BEGIN
        IF  NOT pr01eIsEmptyFileName(opt_tracefile)
        THEN
            BEGIN
            nam := 'TRACEFN(          ';
            p15ptracefnto_args (apc, argl, nam, opt_tracefile);
            END;
        (*ENDIF*) 
        IF  opt_trace = 2
        THEN
            BEGIN
            nam := 'TRACE,            ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 6);
            argl := argl + 6;
            END;
        (*ENDIF*) 
        IF  opt_trace = 3
        THEN
            BEGIN
            nam := 'TRACEL,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        CASE sqldbmode OF
            cpr_kind_db2 :
                BEGIN
                nam := 'SQLMODE (DB2),    ';
                s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                      @pcargs, argl+1, 15);
                argl := argl + 15;
                END;
            cpr_kind_oracle :
                BEGIN
                IF  rasqlansi = cpr_kind_ansi
                THEN
                    nam := 'SQLMODE (ANSIORA),'
                ELSE
                    nam := 'SQLMODE (ORACLE), ';
                (*ENDIF*) 
                s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                      @pcargs, argl+1, 18);
                argl := argl + 18;
                END;
            cpr_kind_sapr3 :
                BEGIN
                nam := 'SQLMODE (SAPR3),  ';
                s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                      @pcargs, argl+1, 17);
                argl := argl + 17;
                END;
            cpr_kind_internal :
                BEGIN
                IF  rasqlansi = cpr_kind_ansi
                THEN
                    nam := 'SQLMODE (ANSI),   '
                ELSE
                    nam := 'SQLMODE(INTERNAL),';
                (*ENDIF*) 
                s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                      @pcargs, argl+1, 18);
                argl := argl + 18;
                END;
            OTHERWISE:
                BEGIN
                nam := 'SQLMODE UNKNOWN,  ';
                s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                      @pcargs, argl+1, 17);
                argl := argl + 17;
                END;
            END;
        (*ENDCASE*) 
        IF  opt_datetime <>  1
        THEN
            BEGIN
            IF  opt_datetime = 2
            THEN
                nam := 'DATETYP(ISO),     ';
            (*ENDIF*) 
            IF  opt_datetime = 3
            THEN
                nam := 'DATETYP(USA),     ';
            (*ENDIF*) 
            IF  opt_datetime = 4
            THEN
                nam := 'DATETYP(EUR),     ';
            (*ENDIF*) 
            IF  opt_datetime = 5
            THEN
                nam := 'DATETYP(JIS),     ';
            (*ENDIF*) 
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 13);
            argl := argl + 13;
            END;
        (* argl max = 105 *)
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  pos = 5
    THEN
        BEGIN
        IF  opt_mode <> 2
        THEN
            BEGIN
            IF  opt_mode = 1
            THEN
                nam := 'SYNTAX,           ';
            (*ENDIF*) 
            IF  opt_mode = 0
            THEN
                nam := 'NOCHECK,          ';
            (*ENDIF*) 
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 8);
            argl := argl + 8;
            END;
        (*ENDIF*) 
        IF  opt_extern  = 0
        THEN
            BEGIN
            nam := 'EXTERN,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        IF  opt_cansi   = 1
        THEN
            BEGIN
            nam := 'CANSI-C++,        ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 10);
            argl := argl + 10;
            END;
        (*ENDIF*) 
        IF  opt_comp   = 0
        THEN
            BEGIN
            nam := 'COMP,             ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 5);
            argl := argl + 5;
            END;
        (*ENDIF*) 
        IF  opt_list
        THEN
            BEGIN
            nam := 'LIST,             ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 5);
            argl := argl + 5;
            END;
        (*ENDIF*) 
        IF  opt_precom
        THEN
            BEGIN
            nam := 'PRECOM,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        IF  opt_comment
        THEN
            BEGIN
            nam := 'COMMENT,          ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 8);
            argl := argl + 8;
            END;
        (*ENDIF*) 
        IF  opt_silent
        THEN
            BEGIN
            nam := 'SILENT,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        IF  opt_nowarn
        THEN
            BEGIN
            nam := 'NOWARN,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        IF  opt_tabformat
        THEN
            BEGIN
            nam := 'TABFORMAT,        ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 10);
            argl := argl + 10;
            END;
        (*ENDIF*) 
        IF  opt_prof = cpr_is_true
        THEN
            BEGIN
            nam := 'PROFILE,          ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 8);
            argl := argl + 8;
            END;
        (*ENDIF*) 
        IF   pclno.lnoout  = cpr_is_true
        THEN
            BEGIN
            nam := 'LINENO,           ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 7);
            argl := argl + 7;
            END;
        (*ENDIF*) 
        IF  opt_lib
        THEN
            BEGIN
            nam := 'LIB,              ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 4);
            argl := argl + 4;
            END;
        (*ENDIF*) 
        IF  NOT opt_quote
        THEN
            BEGIN
            nam := 'QUOTE (DOUBLE),   ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 15);
            argl := argl + 15;
            END;
        (*ENDIF*) 
        IF   NOT opt_decpoint
        THEN
            BEGIN
            nam := 'DECPOINT (COMMA), ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 18);
            argl := argl + 18;
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    IF  pos = 6
    THEN
        BEGIN
        IF   opt_dyn = cpc_dynamic_link
        THEN
            BEGIN
            nam := 'DYNAMICLINK,      ';
            s10mv (mxsp_name, sizeof(pcargs), @nam, 1,
                  @pcargs, argl+1, 12);
            argl := argl + 12;
            END;
        (*ENDIF*) 
        IF   opt_tpmon <> 0
        THEN
            BEGIN
            IF   opt_tpmon  = 1
            THEN
                nam := 'CICS(             ';
            (*ENDIF*) 
            IF   opt_tpmon  = 2
            THEN
                nam := 'PCCICS(           ';
            (*ENDIF*) 
            IF   opt_tpmon  = 3
            THEN
                nam := 'AIM(              ';
            (*ENDIF*) 
            IF   opt_tpmon  = 4
            THEN
                nam := 'UTM(              ';
            (*ENDIF*) 
            p15putname_to_args (apc, argl, nam, opt_tpmonid);
            END;
        (*ENDIF*) 
        END;
    (*ENDIF*) 
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      p15pint2_to_args ( VAR apc : tpc_globals;
            VAR argl : integer;
            VAR namc : tsp00_Name;
            VAR intv : tsp00_Int2);
 
VAR
      i   : integer;
      chr12 : tsp00_C12;
 
BEGIN
WITH apc DO
    BEGIN
    s10mv (mxsp_name, sizeof(pcargs), @namc, 1,
          @pcargs, argl+1, mxsp_name);
    argl := argl + mxsp_name;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    p05inttochr12 (intv, chr12);
    FOR i := 1 TO 12 DO
        IF  chr12 [i] <> bsp_c1
        THEN
            BEGIN
            pcargs [argl+1] := chr12[i];
            argl := argl + 1;
            END;
        (*ENDIF*) 
    (*ENDFOR*) 
    pcargs [argl + 1] := ')';
    pcargs [argl + 2] := ',';
    argl := argl + 2;
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      p15pint4_to_args ( VAR apc : tpc_globals;
            VAR argl : integer;
            VAR namc : tsp00_Name;
            VAR intv : tsp00_Int4);
 
VAR
      i   : integer;
      chr12 : tsp00_C12;
 
BEGIN
WITH apc DO
    BEGIN
    s10mv (mxsp_name, sizeof(pcargs), @namc, 1,
          @pcargs, argl+1, mxsp_name);
    argl := argl + mxsp_name;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    p05inttochr12 (intv, chr12);
    FOR i := 1 TO 12 DO
        IF  chr12 [i] <> bsp_c1
        THEN
            BEGIN
            pcargs [argl+1] := chr12[i];
            argl := argl + 1;
            END;
        (*ENDIF*) 
    (*ENDFOR*) 
    pcargs [argl + 1] := ')';
    pcargs [argl + 2] := ',';
    argl := argl + 2;
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      p15putname_to_args ( VAR apc : tpc_globals;
            VAR argl : integer;
            VAR namc : tsp00_Name;
            VAR namv : tsp00_Name);
 
BEGIN
WITH apc DO
    BEGIN
    s10mv (mxsp_name, sizeof(pcargs), @namc, 1,
          @pcargs, argl+1, mxsp_name);
    argl := argl + mxsp_name;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    s10mv (mxsp_name, sizeof(pcargs), @namv, 1,
          @pcargs, argl+1, mxsp_name);
    argl := argl + mxsp_name;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    pcargs [argl + 1] := ')';
    pcargs [argl + 2] := ',';
    argl := argl + 2;
    END;
(*ENDWITH*) 
END;
 
(*------------------------------*) 
 
PROCEDURE
      p15ptracefnto_args ( VAR apc : tpc_globals;
            VAR argl : integer;
            VAR namc : tsp00_Name;
            VAR trfn : tsp00_VFilename);
 
BEGIN
WITH apc DO
    BEGIN
    s10mv (mxsp_name, sizeof(pcargs), @namc, 1,
          @pcargs, argl+1, mxsp_name);
    argl := argl + mxsp_name;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    s10mv (sizeof(trfn), sizeof(pcargs), @trfn, 1,
          @pcargs, argl+1, sizeof(trfn));
    argl := argl + NODEID_MXSP00;
    WHILE pcargs [argl] = bsp_c1 DO
        argl := argl - 1;
    (*ENDWHILE*) 
    pcargs [argl + 1] := ')';
    pcargs [argl + 2] := ',';
    argl := argl + 2;
    END;
(*ENDWITH*) 
END;
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
*-PRETTY-*  statements    :        447
*-PRETTY-*  lines of code :       1035        PRETTYX 3.10 
*-PRETTY-*  lines in file :       1759         1997-12-10 
.PA 
