OpenVMS Source Code Demos

mysql_demo.com

$!=======================================================================================
$! title    : mysql_demo.com (a common build script for my mysql_demo programs)
$! author   : Neil Rieck
$!          : Waterloo, Ontario, Canada.
$!            http://neilrieck.net  MAILTO:[email protected]
$! platform : OpenVMS 8.4 for Itanium or Alpha
$! notes    :
$! 1) MariaDB is an alternate fork of MySQL
$! 2) your OpenVMS system will have one of three TCPIP stacks: MultiNet, TCPIP Services,
$!    and TCPware which place different include files in sys$library.
$! 3) Object libraries from Mark Berryman require that you link against ssl and crypto
$!    with mixed-case names (libraries from HP/HPE have upcased names)
$! 4) always reference zlib (or libz) before the ssl and crypto libraries
$! 5) my c-only demo programs are numbered 01-09
$! 6) my BASIC-c hybrid demos are numbered 11-19
$! 7) see 'mysql_demo_alt.com' for alternate ways to link to libraries
$! when     who what
$! 20140120 NSR a build script for my MariaDB-5.5-25 demo programs (Alpha only)
$! 20170419 NSR added additional support for Itanium
$! 20171031 NSR added support for MariaDB-5.5-57 and MariaDB-5.5-58
$! 20171123 NSR this single script can now build all my demos
$! 20180412 NSR this script is now much smaller
$! 20180425 NSR cleanup (see 'mysql_demo_alt.com' for alternate ways to link)
$! 20240415 NSR changes for use with "LibMariaDB for VSI OpenVMS" 
$!=======================================================================================
$       say        :== write sys$output                                        !
$       ask        :== inquire/nopunct                                         !
$       on error then goto fini                                                !
$       set on                                                                 !
$       say        "=========================================================="
$       say        "-i-script:",f$environment("procedure")
$       say        "   (a build script for MySQL/MariaDB client demos on OpenVMS)"
$       if P1 .eqs. ""
$       then
$               say "-w-oops, no version number was detected"
$               say "-i-usage: @mysql_demo xx (where xx = version)"
$               say "-i-generating a directory listing"
$               say "=========================================================="
$               dir/col=1/width=file=52/nohead/notrail/date/siz mysql_demo*.c;,mysql_demo*.bas;
$               savedstatus = $STATUS
$               if ((f$integer(savedstatus).and.7).ne.1)
$               then
$                       say "-w-oops, none found"
$                       exit
$               endif
$               say ""
$               ask junk "build which project number? (eg. 01) "
$               if (junk .eqs. "") then goto fini
$               p1 = junk
$       endif
$       if f$length(p1).eq.1 then p1 = "0"+p1                                   !
$       if (p1 .ges. "00") .and. (p1 .les. "09")                                !
$       then                                                                    !
$               hybrid = 0                                                      ! not a hybrid
$               pgm_c = "mysql_demo"+p1                                         ! stand alone c-program
$               app   = "mysql_demo"+p1                                         !
$               goto got_name                                                   !
$       endif                                                                   !
$       if (p1 .ge. "10") .and. (p1 .le. "19")                                  !
$       then                                                                    !
$               hybrid = 1                                                      ! hybrid program
$               pgm_b = "mysql_demo"+p1                                         ! BASIC program
$               app   = "mysql_demo"+p1                                         !
$               pgm_c = "mysql_api_demo"+p1                                     ! c-based API
$               goto got_name                                                   !
$       endif                                                                   !
$       say "-e-processing cannot continue with p1 = (",p1,")"                  !
$       exit                                                                    !
$!
$got_name:
$       say "1) compile-link to MariaDB        from Mark Berryman"
$       say "2) compile-link to LibMariaDB v2  from VSI"
$       say "3) compile-link to LibMariaDB v3  from VSI"
$       say "4) compile-link to MariaDB-5.5-63 from VSI"
$       ask build_method "build method? (1-4, default=1) "
$       if (build_method .eqs. "" ) then build_method = "1"
$       if (build_method .nes. "1") .and.                        -
           (build_method .nes. "2") .and.                        -
           (build_method .nes. "3") .and.                        -
           (build_method .nes. "4")
$       then
$           say "-e-bad choice. Exiting"
$           exit
$       endif
$!-------------------------------------------------------------------- MariaDB from VSI
$    if build_method .eqs. "4"
$    then
$        test = f$trnlnm("mariadb$root")                              ! installed?
$        if test .eqs. ""                                             ! oops
$        then
$            say "-e-MariaDB for VSI OpenVMS is not installed"
$            say "-i-exiting script"
$            exit
$        endif
$        LIBpath = "mariadb$root:[lib]"
$        INCpath = "mariadb$root:[include.mysql]"
$    endif
$!-------------------------------------------------------------------- Libmariadb from VSI
$    if ((build_method .eqs. "2").or.(build_method .eqs. "3"))
$    then
$        test = f$trnlnm("libmariadb$root")                           ! installed?
$        if test .eqs. ""                                             ! oops
$        then
$            say "-e-LibMariaDB for VSI OpenVMS is not installed"
$            say "-i-exiting script"
$            exit
$        else
$            LIBpath = "libmariadb$root:[lib]"
$            INCpath = "libmariadb$root:[include]"
$        endif
$    endif
$!-------------------------------------------------------------------- MariaDB from Mark Berryman
$    if build_method .eqs. "1"
$    then
$        test    = f$trnlnm("mysql051_root")                          ! test location 51
$        if test .eqs. ""                                             ! oops
$        then
$            test = f$trnlnm("mysql055_root")                         ! test location 55
$        endif
$        if test .nes. ""                                             ! if found...
$        then
$            arch        = f$getsyi("ARCH_NAME")                      !
$            LIBpath        = f$trnlnm("mysql055_root")               ! eg. KAWC90$DKB1:[MYSQL055.]
$            LIBpath        = LIBpath - "]"                           !
$            LIBpath        = LIBpath + "lib."'arch'"]"               ! eg. KAWC09$DKB1:[MYSQL055.lib.ia64]
$            INCpath        = f$trnlnm("mysql055_root")               !
$            INCpath        = INCpath - "]"                           !
$            INCpath        = INCpath + "include.mysql]"              ! eg. KAWC09$DKB1:[MYSQL055.include.mysql]
$        else
$            say "-e-MariaDB from Mark Berryman is not installed"
$            say "-i-exiting script"
$            exit
$        endif
$    endif
$!-------------------------------------------------------
$    if (hybrid.eq.1)
$    then
$                say "-i-BASIC compiling: ",pgm_b,".bas"
$                wait 0:0:01
$                basic        'pgm_b'.bas
$                wait 0:0:01
$    endif
$    say "-i-C compiling: ",pgm_c,".c"
$    wait 0:0:01
$    cc         'pgm_c'.c                           -
                /pointer=32                         -
                /float=ieee                         -
                /ieee=denorm                        -
                /nolist                             -
                /name=(as_is,shorten)               -
                /prefix_library_entries=all_entries -
                /include='INCpath'
$        set noon
$!===============================================================
$! now generate a build script to cobble everything together
$!===============================================================
$        build_script = app +".bld_scratch"
$        if f$search(build_script.nes."") then        delete/nolog 'build_script';*
$        open/write  my_bld  'build_script'
$        write my_bld        "$link -"
$        if (hybrid.eq.1)
$        then
$            write my_bld  pgm_b, ".obj, ", pgm_c,".obj -"
$        else
$            write my_bld  pgm_c, ".obj    -"
$        endif
$        write my_bld        " /noMAP                   -"
$        write my_bld        " /NOinformationals        -"
$        write my_bld        " , sys$input/opt"
$if (build_method .eqs."4")
$then
$       write my_bld    " ",LIBpath,"libclientlib.olb/lib"
        write my_bld    " ",LIBpath,"libz32.olb/lib"
        write my_bld    " ",LIBpath,"mariadb$client_shr.exe/share"
$endif
$if ((build_method .eqs."2").or.(build_method .eqs."3"))
$then
$       write my_bld    " ",LIBpath,"libmariadb.olb/lib"
        write my_bld    " ",LIBpath,"libz.olb/lib"
        write my_bld    " ",LIBpath,"libmariadb$shr.exe/share"
$endif
$if (build_method .eqs."1")
$then
$        write my_bld        " ",LIBpath,"libclientlib.olb/library"
$        write my_bld        " ",LIBpath,"libmysys.olb/library"
$   !~   write my_bld        " ",LIBpath,"libsql.olb/library"         ! not required
$        write my_bld        " ",LIBpath,"libstrings.olb/library"
$        write my_bld        " ",LIBpath,"libvio.olb/library"
$        write my_bld        " ",LIBpath,"libz.olb/library"
$        write my_bld        " ",LIBpath,"ssl_libssl32.olb/library"
$        write my_bld        " ",LIBpath,"ssl_libcrypto32.olb/library"
$endif
$finish_build:
$        close my_bld
$        say "-i-linking"
$        @'build_script'
$        savedstatus = $status
$        say "-i-linking summary:"
$        say "-i-exit status: ",savedstatus
$        if ((savedstatus .and. 1).eq.0) then say "-i-there were LINKER warnings"
$        if ((savedstatus .and. 2).eq.2) then say "-i-there were LINKER errors"
$        if ((savedstatus .and. 4).eq.4) then say "-i-there were LINKER fatals"
$        if ((savedstatus .and. 6).eq.0)
$        then
$                say "-i-there were NO LINKER errors"
$                say "-i-you can ignore LINKER warnings pertaining to SSL (if you are not using SSL)"
$                say "-i-look what I just built:"
$                say "==============================================================="
$                dir/col=1/date/width=file=50/nohead/notrail/since="-0 0:0:10" 'app'*.exe;/siz
$                say "==============================================================="
$        endif
$fini:
$        set noon
$        say "-i-exiting script"
$        exit
$!=============================================================================
$! this is the last line
$!=============================================================================