NAME
Cac - Integration of Intersystems Cache Database into Perl
SYNOPSIS
use Cac qw(:lowlevel :highlevel);
_CacEval '$ZV'; print _CacConvert();
This module and all modules in the Cac::-Domain require a perl that has Cache fully embedded. (such a binary is a dual-binary that is a Perl and a Cache binary at the same time. Usually there is a softlink (ln -s cache cperl) so you don't need to use cache --perl anymore, it works the following way:
use:
o cache --perl [perl options ]    and you start perl with embedded cache
o cperl [ perl options ]          and you get perl with embedded cache
o cache [ cache options ]         and you get cache with embedded perl
For backward compatibility with older versions of Cache-Perl
o cache -perl [ perl options ]
is still supported but this feature is deprecated. Use "--perl" instead of "-perl".
Note: Most of this stuff is the low-level Interface, you normally don't need it, except maybe CacEval and CacExecute.
o use Cac::ObjectScript     - for embedded ObjectScript support
o use Cac::Global           - for high-performance global access (bulk support)
o use Cac::Routine          - for calling routines and functions
o use Cac::Bind             - for bidirectional binding of COS Variables to Perl variables
o use Cac::Util             - for utility functions and helpers
DESCRIPTION
* This module provides full access to most Cache call-in functions.
* You should not use the call-in function without exactly knowing what you are doing
* These function are not exported by default and prepended by a underscore (that means internal).
* All functions are perlified - you pass a single string if Cache expects a counted string
* You don't need to check for errors. Most functions raise exceptions on error: use eval { }; to catch them
* Only "A" functions are supported, no "W". "W" is NOT Unicode anyway, Intersystems simply lies to you.
User Interface for Cache Functions
- CacEval $expr
 - 
Evaluates a ObjectScript expression and returns its result Exception: yes Note: This function is slow because it has to preserve terminal settings - CacExecute $stmt
 - 
Executes a ObjectScript command and returns nothing. Exception: yes Note: This function is slow because it has to preserve terminal settings 
Cache Call-In High-Level Functions
The high-level functions can be imported by: use Cache ':highlevel';
- _CacAbort [ CACHE_CTRLC | CACHE_RESJOB ]
 - 
See Cache specification. Exception: Yes Note: Don't use it. - $ctx = _CacContext()
 - 
See Cache specification. Exception: No - $value = _CacConvert()
 - 
See Cache specification. Exception: Yes Note: This function calls CacConvert(CACHE_ASTRING, ...) - $value = _CacConvert2()
 - 
This routine uses CacType() to ask for the type of TOS and tries to get the value the fastest way possible. Exception: Yes - _CacCtrl($bitmap)
 - 
See Cache specification Exception: Yes - $converted = _CacCvtIn($string, $table)
 - 
See Cache specification Exception: Yes - $converted = _CacCvtOut($string, $table)
 - 
See Cache specification Exception: Yes - _CacEnd()
 - 
See Cache specification Exception: Yes Note: You should NEVER EVER call this! even POSIX::_exit(1); is prefered. - $error = _CacError()
 - 
See Cache specification Exception: Yes (if a double fault happens) Note: No need to call this because every error is reported by croak. - $errorstring = _CacErrxlate($errornum)
 - 
See Cache specification Exception: No (if the call to CacheErrxlate fails, undef is returned) - _CacEval $string
 - 
See Cache specification Exception: Yes - _CacExecute $string
 - 
See Cache specification Exception: Yes - $prompt = _CacPrompt()
 - 
See Cache specification Exception: Yes Note: Experts call this functions only by accident. :) - _CacSignal $number
 - 
See Cache specification Exception: Yes Note: Think and you will find out that you don't want it in most cases. - _CacStart($flags, $timeout, $princin, $princout)
 - 
See Cache specification Exception: Yes Note: Don't call it. It's already done. Say simply thanks :) - $type = _CacType()
 - 
See Cache specification Exception: No (ahm, check the return value for errors) 
Cache Low-Level Call-In Functions
The low-level functions can be imported by:
use Cac ':lowlevel';
Use it only IF:
* you know how to use gdb
* you want to corrupt the database
* you never use a condom anyway :)
* you know what gmngen/checksum/mdate is made for :)
- _CacCloseOref $oref
 - 
See Cache specification Exception: Yes - _CacDoFun $rflags, $numargs
 - 
See Cache specification Exception: Yes, please. - _CacDoRtn $rflags, $numargs
 - 
See Cache specification Exception: Oui - _CacExtFun $rflags, $numargs
 - 
See Cache specification Exception: Da - _CacGetProperty()
 - 
See Cache specification Exception: Yes, sir. - _CacGlobalGet $numsubscipt, $die_or_empty
 - 
See Cache specification Exception: yup - _CacGlobalSet $numsubscript
 - 
See Cache specification Exception: yup, on weekends only. - _CacIncrementCountOref $oref
 - 
See Cache specification Exception: ja - _CacInvokeClassMethod $numarg
 - 
See Cache specification Exception: si - _CacPop $arg
 - 
Not implemented Exception: yes - $val = _CacPopDbl()
 - 
See Cache specification Exception: yes - $val = _CacPopInt()
 - 
See Cache specification Exception: yes - $string = _CacPopList()
 - 
Currently not implemented Exception: yes - $oref = _CacPopOref()
 - 
See Cache specification Exception: yes - $str = _CacPopStr()
 - 
See Cache specification Exception: yes - $ptr = _CacPopPtr()
 - 
Not Implemented Exception: yes - _CacPushClassMethod $classname, $methodname, [$flag]/
 - 
See Cache specification Exception: /bin/true Note: flag defaults to 0 - _CacPushDbl $double
 - 
See Cache specification Exception: yes - $rflags = _CacPushFunc $tag, $routine;
 - 
See Cache specification Exception: yes - $rflags = _CacPushFuncX $tag, $offset, $env, $routine;
 - 
See Cache specification Exception: yes - _CacPushGlobal $global
 - 
See Cache specification Exception: yes - _CacPushGlobalX $global, $env
 - 
See Cache specification Exception: yes - _CacPushInt $i
 - 
See Cache specification Exception: yes - _CacPushList $string
 - 
See Cache specification Exception: yes - _CacPushMethod $oref, $methodname, [$flag]
 - 
See Cache specification Exception: yes Note: $flag defaults to 0 - _CacPushOref $oref
 - 
See Cache specification Exception: yes - _CacPushProperty $oref, $property
 - 
See Cache specification Exception: yes - _CacPushPtr $value
 - 
See Cache specification Exception: yes - $rflags = _CacPushRtn $tag, $routine
 - 
See Cache specification Exception: yes - $rflags = _CacPushRtnX $tag, $offset, $env, $routine
 - 
See Cache specification Exception: yes - _CacPushStr $string
 - 
See Cache specification Exception: yes - _CacSetProperty()
 - 
See Cache specification Exception: yes - _CacUnPop()
 - 
See Cache specification Exception: yes 
SEE ALSO
Cac::ObjectScript, Cac::Global, Cac::Routine, Cac::Util, Cac::Bind.
AUTHOR
Stefan Traby <stefan@hello-penguin.com>
http://hello-penguin.com
COPYRIGHT
Copyright 2001,2003,2004 by KW-Computer Ges.m.b.H Graz, Austria
Copyright 2001,2002,2003,2004 by Stefan Traby <stefan@hello-penguin.com>
LICENSE
This module is licenced under LGPL
(GNU LESSER GENERAL PUBLIC LICENSE)
see the LICENSE-file in the toplevel directory of this distribution.