.ad 8
.bm 8
.fm 4
.bt $Copyright (c) 2000-2005 SAP AG$$Page %$
.tm 12
.hm 6
.hs 3
.tt 1 $SQL$Project Distributed Database System$VPR07C$
.tt 2 $$$
.TT 3 $$SAPDB-runtime-Version-stamp$2000-04-27$
***********************************************************
.nf

.nf

.nf

    ========== licence begin  GPL
    Copyright (c) 2000-2005 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


.fo
.nf
.sp
MODULE  : SAPDB-runtime-Version-stamp
=========
.sp
Purpose : 
.CM *-END-* purpose -------------------------------------
.sp
.cp 3
Define  :
#ifndef RC_INVOKED
#include "vpr07Macro.h"
typedef struct
{
  char *szVersion;
  int  cbBuild;
} tpr_pcVersion;

#ifdef __cplusplus
#define externC extern "C"
#else
#define externC
#endif

externC void p07_copyright (void);
externC void p07senderid (tsp00_Int2 * xalang, tsp00_C8 senderid, tsp00_Int2 * cmpkind);
externC void p07version (tsp00_C40 * vers);
externC char *pr07RelNr();
externC char *pr07MinRelNr();

#endif

#define P07_PRODNAME   PROD_NAME_SP100
#if CORRECTION_LEVEL_SP100 < 10
#define P07_RELSTR       MAJOR_VERSION_NO_STR_SP100 "." MINOR_VERSION_NO_STR_SP100 ".0" CORRECTION_LEVEL_STR_SP100
#else
#define P07_RELSTR       MAJOR_VERSION_NO_STR_SP100 "." MINOR_VERSION_NO_STR_SP100 "." CORRECTION_LEVEL_STR_SP100
#endif
#define P07_FILEVERSION   MAJOR_VERSION_NO_SP100,MINOR_VERSION_NO_SP100,CORRECTION_LEVEL_SP100,BUILD_PREFIX_SP100
#define P07_FILEVERSION_STR   MAJOR_VERSION_NO_STR_SP100"."MINOR_VERSION_NO_STR_SP100"."CORRECTION_LEVEL_STR_SP100"."BUILD_PREFIX_STR_SP100

#define P07_BUILD         <BUILD_PREFIX>

#define P07_FORMATVERSION(szRelNr) sprintf(szRelNr, "%d%02d%02d", MAJOR_VERSION_NO_SP100, MINOR_VERSION_NO_SP100, CORRECTION_LEVEL_SP100)

#define P07_PCR_VERSION COMP_NAME_C_PREC_SP100 " " P07_RELSTR "    Build %s"

#define P07_COMPANY         COMPANY_NAME_SP100
#define P07_PC_RUNTIME      COMP_NAME_C_PREC_SP100" Runtime"
#define P07_PC_PRECOMPILER  "C-PreComp"
#define P07_PC_COPYR_RESERV COPYRIGHT_SP100

#define P07_PC_COPYR_VERSION P07_PC_RUNTIME" "P07_FILEVERSION_STR" "DATE_SP100

#define P07_CMPCALL   "CAL"
#define P07_CMPCPC    "CPC"
#define P07_CMPCOB    "COB"
#define P07_CMPODBC   "ODB"
#define P07_CMPOCI    "OCI"

.CM *-END-* define --------------------------------------
.sp;.cp 3
Use     :
.CM *-END-* use -----------------------------------------
.sp;.cp 3
Synonym :
 
.CM *-END-* synonym -------------------------------------
.sp;.cp 3
Author  : BurkhardD
.sp
.cp 3
Created : 1994-05-04
.sp
.cp 3
Version : 1994-05-04
.sp
.cp 3
Release :      Date : 2000-04-27
.sp
***********************************************************
.sp
.cp 20
.fo
.oc _/1
Specification:

.CM *-END-* specification -------------------------------
.sp 2.fo
***********************************************************
.sp
.cp 10
.fo
.oc _/1
Description:
 
.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    :
/*PRETTY*/
#include <stdio.h>
#include <memory.h>
#ifndef DEBUG
#line 113 "vpr07c" 
#endif

extern char *s98CPCDrvBuildNumber(void);
tpr_pcVersion p07runver={P07_RELSTR, P07_BUILD};

char *pr07RelNr()
{
  static char szRelNr[6] = "";
  if (szRelNr[0] == '\0') {
    P07_FORMATVERSION(szRelNr); 
  }
  return szRelNr;
}

char *pr07MinRelNr()
{
  static char szRelNr[6] = "";
  if (szRelNr[0] == '\0') {
    sprintf(szRelNr, "%d", Min_CPCVersion_cpr00);
  }
  return szRelNr;
}

#ifdef SAPDB_SLOW
#  define P07_SPEED "slow"
#else
#  ifdef SAPDB_QUICK
#    define P07_SPEED "quick"
#  else
#    define P07_SPEED ""
#  endif
#endif

void p07_copyright (void)
{
   const char *cver="@(#) "P07_PC_COPYR_VERSION;
   const char *cres="@(#) "P07_PC_COPYR_RESERV;
   return;
}

void p07version (tsp00_C40 *vers)
{
  int len;
  tsp00_Versionc  VersionString;
  sp100_GetVersionString( COMP_NAME_C_PREC_SP100, s98CPCDrvBuildNumber, VersionString);
  len = strlen(VersionString);
  len = (len > sizeof(*vers)) ? sizeof(*vers) : len;
  memcpy(vers, VersionString, len);
  memset (vers[len], ' ', sizeof(tsp00_C40)-len);
}


void 
p07senderid (tsp00_Int2 * xalang,
    tsp00_C8 senderid, tsp00_Int2 * cmpkind )
{
    char           *c;

    M90TRACE (M90_TR_ENTRY, "P07senderid", 0);
    M90TRACE (M90_TR_SWORD, "xalang", &xalang);
    p07_copyright ();
    *cmpkind = *xalang; 
    switch (*xalang)
        {
        case (CPR_LA_CALL):
            {
                c = P07_CMPCALL;
                break;
            }
        case (CPR_LA_ODBC):
            {
                c = P07_CMPODBC;
		*xalang = CPR_LA_CALL;
                break;
            }
        case (CPR_LA_OCI):
            {
                c = P07_CMPOCI;
		*xalang = CPR_LA_CALL;
                break;
            }
        case (CPR_LA_COBOL):
            {
                c = P07_CMPCOB;
                break;
            }
        default:
            {
                c = P07_CMPCPC;
                break;
            }
        }
    memcpy (senderid, pr07RelNr(), 5);
    memcpy (senderid + 5, c, 3);
    M90TRACELEN (M90_TR_STRING, "senderid", senderid, sizeof (tsp00_C8));
    M90TRACE (M90_TR_EXIT, "P07senderid", 0);
    return;
}     /*--------------------------------------------*/


tpr_pcVersion *p07pcversion=NULL;

void p07trversion(sqlratype * sqlrap)
{
  sqltatype      *tap = sqlrap->rasqltap;
  tsp00_Int2       *ll = &tap->tastr80l;
  char *szDriverName;
  /* short trace write header information - changed 03/2000
     if (tap->tatrout != CPR_TRACE_LONG && tap->tatrout != CPR_TRACE_MODLONG) */
  if (tap->tatrout < CPR_TRACE_FORMAL) 
    return;
  *ll=sprintf(tap->tastr80, "PRODUCT : "P07_PRODNAME" "P07_PC_RUNTIME);
  p08vfwritetrace (sqlrap);
  szDriverName = sqlCPCGetDriverName();
  if (szDriverName) {
    int cplen, i;
    int len = strlen(szDriverName);
    *ll=sprintf(tap->tastr80, "DRIVER  : ");    
    cplen = PR07MIN(sizeof(tap->tastr80)-*ll, len);
    memcpy(&tap->tastr80[*ll], szDriverName, cplen);
    *ll += cplen;
    p08vfwritetrace (sqlrap);
    for(i=cplen; i < len; i+=cplen) {
      szDriverName+=cplen;
      cplen = PR07MIN(sizeof(tap->tastr80), len);
      memcpy(tap->tastr80, szDriverName, cplen); 
      *ll = cplen;
      p08vfwritetrace (sqlrap);
    }
  }    
  if (p07pcversion && 
      (strcmp(p07runver.szVersion, p07pcversion->szVersion) || p07runver.cbBuild != p07pcversion->cbBuild)) {
    *ll=sprintf(tap->tastr80, "WARNING : VERSIONS ARE DIFFERENT");
    p08vfwritetrace (sqlrap);
    *ll=sprintf(tap->tastr80, "PRECOMPILER : %s %03d", p07pcversion->szVersion, p07pcversion->cbBuild);
    p08vfwritetrace (sqlrap);
    *ll=sprintf(tap->tastr80, "LIBRARY : %s %03d", p07runver.szVersion, p07runver.cbBuild);
    p08vfwritetrace (sqlrap);
  }
  else {
    *ll=sprintf(tap->tastr80, "VERSION : %s", p07runver.szVersion);
    p08vfwritetrace (sqlrap);  
  }
  if (1 || !p07pcversion) {
    tsp00_Versionc  VersionString;
    sp100_GetVersionString( COMP_NAME_C_PREC_SP100, s98CPCDrvBuildNumber, VersionString);
    *ll=sprintf(tap->tastr80, "BUILD   : %s", &VersionString[BEG_OF_2CND_VERS_SUBSTR_SP100]);
    p08vfwritetrace (sqlrap);  
  }    
}

.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
*-PRETTY-*  statements    :        765
*-PRETTY-*  lines of code :       2101        PRETTY  3.09 
*-PRETTY-*  lines in file :       3233         1992-11-23 
.PA 
