ARSperl

 view release on metacpan or  search on metacpan

ARS.pm  view on Meta::CPAN


# Routines for grabbing the current error message "stack" 
# by simply referring to the $ars_errstr scalar.


package ARS::ERRORSTR;
sub TIESCALAR {
    bless {};
}
sub FETCH {
    my($s, $i) = (undef, undef);
    my(%mTypes) = ( 0 => "OK", 1 => "WARNING", 2 => "ERROR", 3 => "FATAL",
		    4 => "INTERNAL ERROR",
		   -1 => "TRACEBACK");
    for($i = 0; $i < $ARS::ars_errhash{numItems}; $i++) {

	# If debugging is not enabled, don't show traceback messages

	if($ARS::DEBUGGING == 1) {
	    $s .= sprintf("[%s] %s (ARERR \#%d)",
			  $mTypes{@{$ARS::ars_errhash{messageType}}[$i]},

ARS.pm  view on Meta::CPAN

#   ars_padEntryid(control, schema, entry-id)
#
# DESCRIPTION
#   this routine will left-pad the entry-id with
#   zeros out to the appropriate number of place (15 max)
#   depending upon if your prefix your entry-id's with
#   anything
#
# RETURNS
#   a new scalar on success
#   undef on error

sub ars_padEntryid {
	my($c) = shift;
	my($schema) = shift;
	my($entry_id) = shift;
	my($field);

	# entry id field is field id #1
	($field = ars_GetField($c, $schema, 1)) ||
	return undef;
	if( $field->{defaultVal} ){
		return $field->{defaultVal}.("0"x($field->{limit}{maxLength}-length($field->{defaultVal})-length($entry_id))).$entry_id;
	}else{
		return ("0"x($field->{limit}{maxLength}-length($entry_id))).$entry_id;
	}	
}

# ROUTINE
#   ars_decodeStatusHistory(field-value)
#

ARS.pm  view on Meta::CPAN

    my ($pair, $ts, $un);
    my (@retval);

    foreach $pair (split(/\003/, $sval)) {
	if($pair ne "") {
	    ($ts, $un) = split(/\004/, $pair);
	    $retval[$enum]->{USER} = $un;
	    $retval[$enum]->{TIME} = $ts;
	} else {
	    # no value for this enumeration
	    $retval[$enum]->{USER} = undef;
	    $retval[$enum]->{TIME} = undef;
	}
	$enum++;
    }

    return @retval;
}

#define AR_DEFN_DIARY_SEP        '\03'     /* diary items separator */
#define AR_DEFN_DIARY_COMMA      '\04'     /* char between date/user/text */

ARS.pm  view on Meta::CPAN

#   ars_EncodeDiary(diaryhash1, diaryhash2, ...)
#
# DESCRIPTION
#   given a list of diary hashs (see ars_GetEntry), 
#   encode them into an ars-internal diary string. this can 
#   then be fed into ars_MergeEntry() in order to alter the contents
#   of an existing diary entry.
#
# RETURNS
#   an encoded diary string (scalar) on success
#   undef on failure

sub ars_EncodeDiary {
    my ($diary_string) = undef;
    my ($entry);
    foreach $entry (@_) {
	$diary_string .= $entry->{timestamp}.pack("c",4).$entry->{user}.pack("c",4).$entry->{value};
	$diary_string .= pack("c",3) if ($diary_string);
    }
    return $diary_string;
}

sub insertValueForCurrentTransaction {
	my ($c, $s, $q) = (shift, shift, shift);

ARS.xs  view on Meta::CPAN

#include "support.h"
#include "supportrev.h"
#include "supportrev_generated.h"

#if AR_EXPORT_VERSION < 3
#define AR_LIST_SCHEMA_ALL 1 
#endif


#if defined(ARSPERL_UNDEF_MALLOC) && defined(malloc)
 #undef malloc
 #undef calloc
 #undef realloc
 #undef free
#endif


MODULE = ARS		PACKAGE = ARS		PREFIX = ARS

PROTOTYPES: ENABLE

int
isa_int(...)
	CODE:

ARS.xs  view on Meta::CPAN

	  h = (HV* ) SvRV((SV*) in);
	  if( ! SvTRUE(hv_scalar(h)) ){
		  RETVAL = qual;
		  goto ars_qualifier_ptr_end;
	  }

	  h_dummy = newHV();
	  SvREFCNT_inc( in );
	  hv_store( h_dummy, "_", 1, in, 0 );
	  rv += rev_ARQualifierStruct( ctrl, h_dummy, "_", qual );
	  hv_undef( h_dummy );

	  if( rv == 0 ){
		  RETVAL = qual;
	  }else{
		  ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL );
		  RETVAL = NULL;
		  FreeARQualifierStruct(qual, TRUE);
	  }
	  ars_qualifier_ptr_end:;
	}

ARS.xs  view on Meta::CPAN

			if( hv_exists(h,"customDateFormat",16) ){
				strncpy( ctrl->localeInfo.customDateFormat, SvPV_nolen( *(hv_fetch(h,"customDateFormat",16,0)) ), AR_MAX_FORMAT_SIZE );
			}
			if( hv_exists(h,"customTimeFormat",16) ){
				strncpy( ctrl->localeInfo.customTimeFormat, SvPV_nolen( *(hv_fetch(h,"customTimeFormat",16,0)) ), AR_MAX_FORMAT_SIZE );
			}
			if( hv_exists(h,"separators",10) ){
				strncpy( ctrl->localeInfo.separators, SvPV_nolen( *(hv_fetch(h,"separators",10,0)) ), AR_MAX_LANG_SIZE );
			}

			hv_undef( h );
		}
#endif
#if AR_EXPORT_VERSION >= 7L
		ctrl->authString[0] = 0;
		if ( CVLD(authString) ) {
			strncpy(ctrl->authString, authString, AR_MAX_NAME_SIZE);
		}
#endif
#if AR_EXPORT_VERSION >= 4
		/* call ARInitialization */

ARS.xs  view on Meta::CPAN

	    }
	    /* printf( "--------------------\n" ); fflush(stdout); */ /* _DEBUG_ */

	    ret = ARCreateEntry(ctrl, schema, &fieldList, entryId, &status);
#ifdef PROFILE
	    ((ars_ctrl *)ctrl)->queries++;
#endif
	    if (! ARError( ret, status)) rv = 1;
	  create_entry_end:;
	    if(rv == 0) {
	      RETVAL = newSVsv(&PL_sv_undef);
	    } else {
	      RETVAL = newSVpv( entryId, strlen(entryId) );
	    }
			AP_FREE(fieldList.fieldValueList);
	    if( getFieldIds.internalIdList != NULL ) AP_FREE(getFieldIds.internalIdList);
	  }
	}
	OUTPUT:
	RETVAL

ARS.xs  view on Meta::CPAN

					loc.u.buf.buffer, 
					loc.u.buf.bufSize)));
#else
				XPUSHs(sv_2mortal(newSVpvn(
					loc.u.buf.buffer, 
					loc.u.buf.bufSize)));
#endif
			else
				XPUSHs(sv_2mortal(newSViv(1)));
		} else
			XPUSHs(&PL_sv_undef);
		if (entryList.entryIdList) AP_FREE(entryList.entryIdList);
		switch (loc.locType)
		{
		case AR_LOC_FILENAME:
			AP_FREE(loc.u.filename);
			break;
		case AR_LOC_BUFFER:
			FreeARLocStruct(&loc, FALSE);
			break;
		}
#else /* pre ARS-4.0 */
		(void) ARError_add(AR_RETURN_ERROR, AP_ERR_DEPRECATED, 
			"ars_GetEntryBLOB() is only available > ARS4.x");
		XPUSHs(&PL_sv_undef);
#endif
	get_entryblob_end:;
	}

void
ars_GetEntry(ctrl,schema,entry_id,...)
	ARControlStruct *	ctrl
	char *			schema
	char *			entry_id
	PPCODE:

ARS.xs  view on Meta::CPAN


		count = 0;

		if( items >= 4 ){
			SV* st3 = ST(3);
			if( SvROK(st3) && SvTYPE(SvRV(st3)) == SVt_PVAV ){
				HV *h_dummy = newHV();
				SvREFCNT_inc( st3 );
				hv_store( h_dummy, "_", 1, st3, 0 );
				rv += rev_ARContainerOwnerObjList( ctrl, h_dummy, "_", &ownerObjList );
				hv_undef( h_dummy );
			}else{
				clist[count++] = SvIV(st3);
			}
		}

		for(i = 4 ; i < items ; ++i){
			clist[count++] = SvIV(ST(i));
		}
		containerTypes.numItems = count;
		containerTypes.type = clist; 

ARS.xs  view on Meta::CPAN

			hv_store(menuDef,  "server", strlen("server") , 
				newSVpv(menuDefn.u.menuQuery.server, 0), 0);
#if AR_EXPORT_VERSION >= 6
			{
				int lfn = 0;
				AV *a = newAV();
				while (lfn < AR_MAX_LEVELS_DYNAMIC_MENU) {
					if ( menuDefn.u.menuQuery.labelField[lfn] ) {
						av_push(a, newSViv(menuDefn.u.menuQuery.labelField[lfn]));
					} else {
						av_push(a, newSVsv(&PL_sv_undef));
					}
					lfn++;
				}
				hv_store(menuDef, "labelField", strlen("labelField"),
					 newRV_noinc((SV *) a), 0);
			}
#else
			{
				AV *a = newAV();
				av_push(a, newSViv(menuDefn.u.menuQuery.labelField));

ARS.xs  view on Meta::CPAN

			hv_store(menuDef,  "sqlCommand", strlen("sqlCommand") , 
				newSVpv(menuDefn.u.menuSQL.sqlCommand, 0), 0);
#if AR_EXPORT_VERSION >= 6
			{
				int lfn = 0;
				AV *a = newAV();
				while (lfn < AR_MAX_LEVELS_DYNAMIC_MENU) {
					if ( menuDefn.u.menuSQL.labelIndex[lfn] ) {
						av_push(a, newSViv(menuDefn.u.menuSQL.labelIndex[lfn]));
					} else {
						av_push(a, newSVsv(&PL_sv_undef));
					}
					lfn++;
				}
				hv_store(menuDef, "labelIndex", strlen("labelIndex"),
					 newRV_noinc((SV *) a), 0);
			}
#else
			hv_store(menuDef,  "labelIndex", strlen("labelIndex") , 
				newSViv(menuDefn.u.menuSQL.labelIndex), 0);
#endif

ARS.xs  view on Meta::CPAN

ars_ExpandCharMenu2(ctrl,name,qual=NULL)
	ARControlStruct *	ctrl
	char *			name
	ARQualifierStruct *     qual
	CODE:
	{
		ARCharMenuStruct menuDefn;
		ARStatusList     status;
		int              ret;

		RETVAL = &PL_sv_undef;
		(void) ARError_reset();
		Zero(&menuDefn, 1, ARCharMenuStruct);
		Zero(&status, 1,ARStatusList);
		DBG( ("-> ARGetCharMenu\n") );
		ret = ARGetCharMenu(ctrl, name, NULL, &menuDefn, 
					NULL, NULL, NULL, NULL, NULL, 
#if AR_EXPORT_VERSION >= 5
			      		NULL,
#endif
			     		&status);

ARS.xs  view on Meta::CPAN

#if AR_EXPORT_VERSION >= 8L
		ARWorkflowLockStruct workflowLockStruct;
#endif
	  
		(void) ARError_reset();
		Zero(&status, 1, ARStatusList);
		Zero(&structItems, 1, ARStructItemList);
#if AR_EXPORT_VERSION >= 8L
		Zero(&workflowLockStruct, 1, ARWorkflowLockStruct);
#endif
		RETVAL = &PL_sv_undef;
		if ( (items % 2 == 0) || (c < 1) ) {
			(void) ARError_add( AR_RETURN_ERROR, AP_ERR_BAD_ARGS);
			ok = 0;
		} else {
			structItems.numItems = c;
			AMALLOCNN(structItems.structItemList, c, ARStructItemStruct);
			for (i = 0 ; i < c ; i++) {
				unsigned int et = 0;
				a  = i * 2 + 3;
				et = caseLookUpTypeNumber((TypeMapStruct *) 

ARS.xs  view on Meta::CPAN

	  Zero(&nameList, 1, ARNameList);
	  Zero(&status, 1,ARStatusList);

	  if( schema == NULL ){
	    /* do nothing */
	  }else if( SvROK(schema) && SvTYPE(SvRV(schema)) == SVt_PVAV ){
	    HV *h_dummy = newHV();
	    SvREFCNT_inc( schema );
	    hv_store( h_dummy, "_", 1, schema, 0 );
	    rv += rev_ARNameList( ctrl, h_dummy, "_", &schemaList );
	    hv_undef( h_dummy );
	    schemaListPtr = &schemaList;
	  }else if( SvPOK(schema) ){
	    STRLEN len = 0;
	    char *str = SvPV( schema, len );
	    if( len > 0 ){
	      schemaList.numItems = 1;
	      schemaList.nameList = (ARNameType*) MALLOCNN(sizeof(ARNameType) * 1);
	      strncpy( schemaList.nameList[0], str, AR_MAX_NAME_SIZE );
	    }
	    schemaListPtr = &schemaList;

ARS.xs  view on Meta::CPAN

			/* sv_2mortal( (SV *)fieldValue_hash ); */
			for (field=0; field < fieldList.valueListList[i].numItems; field++) {
				sprintf(intstr,"%ld",fieldList.valueListList[i].fieldValueList[field].fieldId);
				hv_store( fieldValue_hash,
					intstr, strlen(intstr),
					perl_ARValueStruct(ctrl,&fieldList.valueListList[i].fieldValueList[field].value),
					0 );
			}
			XPUSHs( sv_2mortal( newRV_noinc((SV *)fieldValue_hash) ) );
		} else {
			XPUSHs(&PL_sv_undef);
		}
	}
	get_mentry_cleanup:;
	FreeARInternalIdList(&idList, FALSE);
	FreeAREntryIdListList(&entryList, FALSE);
	FreeARFieldValueListList(&fieldList, FALSE);
	FreeARBooleanList(&existList, FALSE);
	}


ARS.xs  view on Meta::CPAN

			hv_store( fieldValue_hash,
				keyStr, strlen(keyStr),
				perl_ARValueStruct(ctrl, &(valPtr->value)),
				0 );
		}
		XPUSHs( sv_2mortal( newRV_noinc((SV *)fieldValue_hash) ) );
	}
#endif

	getlistentry_multischema_end:
	hv_undef( hDummy );
#if AR_CURRENT_API_VERSION >= 17
	FreeARMultiSchemaFieldFuncList( &getListFields, FALSE );
	FreeARMultiSchemaFieldFuncValueListList( &entryFieldValueList, FALSE );
#else
	FreeARMultiSchemaFieldIdList( &getListFields, FALSE );
	FreeARMultiSchemaFieldValueListList( &entryFieldValueList, FALSE );
#endif
	FreeARMultiSchemaSortList( &sortList, FALSE );
#else	/* prior to ARS 7.5 */
	(void) ARError_reset();

ARS.xs  view on Meta::CPAN

				unsigned int i = 0;
				while(i < userList.numItems) {
					XPUSHs(sv_2mortal(newSVpvn(userList.nameList[i++], 
							AR_MAX_NAME_SIZE)));
				}
			}
		}
#else
	  (void) ARError_add(AR_RETURN_ERROR, AP_ERR_DEPRECATED, 
			"GetListAlertUser() is only available in ARSystem >= 5.0");
	  XPUSHs(sv_2mortal(&PL_sv_undef));
#endif
	}

SV *
ars_GetAlertCount(ctrl,qualifier=NULL)
	ARControlStruct *	ctrl
	ARQualifierStruct *	qualifier
	CODE:
	{
		ARStatusList     status;
		int              ret = 0;
		unsigned int	 count = 0;

		RETVAL=newSVsv(&PL_sv_undef);
#if AR_EXPORT_VERSION >= 6
		(void) ARError_reset();
		Zero(&status, 1, ARStatusList);
		ret = ARGetAlertCount(ctrl, qualifier, &count,
				      &status);
		if( !ARError(ret, status) ) {
			/* RETVAL=sv_2mortal(newSViv(count)); */
			RETVAL = newSViv(count);
		}
#else

ARS.xs  view on Meta::CPAN

	ARNameType		sourceTag
	ARServerNameType	serverName
	ARNameType		formName
	char *			objectId
	CODE:
	{
		ARStatusList     status;
		int              ret = 0;
		AREntryIdType	 entryId;

		RETVAL=newSVsv(&PL_sv_undef);
		(void) ARError_reset();
		Zero(&status, 1, ARStatusList);
		Zero(&entryId, 1, AREntryIdType);
#if AR_EXPORT_VERSION >= 6
		ret = ARCreateAlertEvent(ctrl, 
					user,
					alertText,
					priority,
					sourceTag,
					serverName,

ARS.xs  view on Meta::CPAN

		Zero(&status, 1, ARStatusList);
		Zero(&varValue, 1, ARValueStruct);
		
		ret = ARGetSessionConfiguration(ctrl, variableId, &varValue, &status);
		
		if( !ARError(ret, status) ) {
			RETVAL = perl_ARValueStruct(ctrl, &varValue);
		}
		else
		{
			RETVAL = &PL_sv_undef;
		}
		FreeARValueStruct(&varValue, FALSE);
#else /* < 5.0 */
	  XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
	  (void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED, 
			"GetSessionConfiguration() is only available in ARSystem >= 5.0");
#endif
	}
	OUTPUT:
	RETVAL

ARS/CodeTemplate.pm  view on Meta::CPAN

	}
	open( OUTFILE, ">$outfile" ) or die "$outfile: $!\n";
	print OUTFILE get_header( $outfile, $0 ) if $opt{'o'};
	print OUTFILE $text;
	close OUTFILE;
}

sub include {
	my( $file ) = @_;

	local $/ = undef;
	local *FILE;
	open( FILE, $file ) or do {
		warn "Cannot open \"$file\": $!\n";
		return undef;
	};
	my $data = <FILE>;
	close FILE;
	return $data;
}

sub modByRegex {
	package main;
	my( $val, @regex ) = @_;
	foreach my $regex ( @regex ){

ARS/OOform.pm  view on Meta::CPAN

sub getEnumValues {
	my ($this) = shift;
	my ($field) = ARS::rearrange([FIELD], @_);
	if(ref($this->{'fieldEnumValues'}->{$field}) eq "ARRAY") {
		return @{$this->{'fieldEnumValues'}->{$field}};
	}
        $this->{'connection'}->pushMessage(&ARS::AR_RETURN_ERROR,
                                           81006,
                                           "field $field is not an enumeration field.");
	$this->{'connection'}->tryCatch();
	return undef;
}

# query(-query => "qualifier", -maxhits => 100, -firstretrieve => 0)

sub query {
    my ($this) = shift;
    my ($query, $maxhits, $firstretr) = ARS::rearrange([QUERY,MAXHITS,FIRSTRETRIEVE], @_);
    $query = "(1 = 1)" unless defined($query);
    $maxhits = 0 unless defined($maxhits);
    $firstretr = 0 unless defined($firstretr);

ARS/OOform.pm  view on Meta::CPAN

    print "internal2value($f, $v) type=$t\n" 
	if $this->{'connection'}->{'.debug'};
    
    # translate an enumeration value into a text value
    
    if($t eq "enum") {
	# if the field doesnt exist in our cache, or if the
	# enumeration value exceeds the known list of enumerations,
	# barf.
	
	return undef unless defined $v;
	if(!defined($this->{'fieldEnumValues'}->{$f}) || 
	   (!exists($this->{'fieldEnumValues'}->{$f}->{$v})) ) {
	    $this->{'connection'}->pushMessage(&ARS::AR_RETURN_ERROR,
					       81004,
					       "[1] unable to translate enumeration value for field '$f'"
					       );
	}
	
	return $this->{'fieldEnumValues'}->{$f}->{$v}
	}

ARS/OOmsgs.pm  view on Meta::CPAN

    push @{$ARS::ars_errhash{messageType}}, $type;
    push @{$ARS::ars_errhash{messageNum}}, $num;
    push @{$ARS::ars_errhash{messageText}}, $text;
    $this->tryCatch();
}

sub messages {
  my(%mTypes) = ( 0 => "OK", 1 => "WARNING", 2 => "ERROR", 3 => "FATAL",
		  4 => "INTERNAL ERROR",
		  -1 => "TRACEBACK");
  my ($this, $type, $str) = (shift, shift, undef);

  return $ars_errstr if(!defined($type));

  for(my $i = 0; $i < $ARS::ars_errhash{numItems}; $i++) {
    if(@{$ARS::ars_errhash{'messageType'}}[$i] == $type) {
      $s .= sprintf("[%s] %s (ARERR \#%d)", 
		    $mTypes{@{$ARS::ars_errhash{messageType}}[$i]}, 
		    @{$ARS::ars_errhash{messageText}}[$i], 
		    @{$ARS::ars_errhash{messageNum}}[$i]); 
      $s .= "\n" if($i < $ARS::ars_errhash{numItems}-1); 

ARS/OOsup.pm  view on Meta::CPAN

  my ($server, $username, $password, $catch, $ctrl, $dbg, $tcpport) = 
    rearrange([SERVER,USERNAME,PASSWORD,CATCH,CTRL,DEBUG,TCPPORT],@p);
  # should the OO layer emit debugging information?

  $self->{'.debug'} = 0;
  $self->{'.debug'} = 1 if(defined($dbg));

  $self->initCatch();

  # what error handlers should be called automatically by the OO layer?
  # if a handler is 'undef' then the OO layer will ignore that type of
  # exception (warning, error or fatal). it is then upto the user to
  # check ->hasErrors(), etc. 
  # this should be a hash ref.

  if(defined($catch) && ref($catch) ne "HASH") {
      $self->pushMessage(&ARS::AR_RETURN_ERROR,
			  81000,
			  "catch parameter should be a HASH reference. (you gave me ".ref($catch)." reference)"
			 );
  }

ARS/OOsup.pm  view on Meta::CPAN

  my $this = shift;
  my ($changedSince, $schemaType, $name) =  
    rearrange([CHANGEDSINCE,SCHEMATYPE,NAME],@_);

  $changedSince = 0 unless defined($changedSince);
  $schemaType = ARS::AR_LIST_SCHEMA_ALL unless defined($schemaType);
  $name = "" unless defined($name);

  return ars_GetListSchema($this->{'ctrl'},
			   $changedSince,
			   $schemaType, undef,
			   $name);
}

sub openForm {
  my $this = shift;
  my($form, $vui) = rearrange([FORM,VUI], @_);

  $this->pushMessage(&ARS::AR_RETURN_ERROR,
		     81000,
		     "usage: c->openForm(-form => name, -vui => vui)\nform parameter is required.")    

CHANGES  view on Meta::CPAN

 (TS)   fixed exsi.pl enumeration gap problem

 (TS)   added lengthUnits,storageOptionForCLOB attributes to ARCharLimitsStruct,ARDisplayLimits

 (TS)   fixed ars_GetServerInfo() keys 325-332 problem

 (TS)   modifications for AR 7.6.3 API

 (TS)   ars_GetEntryBLOB bugfix by Conny Martin

 (TS)   fixed "hv_fetch error" problem in case of undefined ARValueStruct 

 (TS)   fixed SignalTypeMap problem

 (TS)   package directory reorganization/cleanup

 (TS)   additional ars_Login parameters by Conny Martin

 (TS)   implemented ars_GetList/Get/Create/Set/DeleteImage

 (TS)   fixed incorrect AR_ARITH_OP_NEGATE handling in rev_ARArithOpStruct

CHANGES  view on Meta::CPAN


 (TS)   fixed ars_GetAlertCount

 (MB)   removed legacy ars_NT Notifier and ars_AdminExtension calls

 (MB) ! added ars_VerifyUser implementation by Thilo Stapff

 (MB) ! changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION

 (MB)   fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they 
        return undef on failure.

(JCM)   buffer overflow in perl_BuildEntryList

(JCM)   malloc-on-windows patch by John Unsworth

 (TS)   fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )")

 (TS)   bugfix in dup_Value (support.c) for API version <= 5.0.1

 (TS)   changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1

CHANGES  view on Meta::CPAN

Released: 11/11/96 Version: 1.31


(JCM)   minor stuff: added an ifndef in the GetCharMenu routine
        for ars 2.0 users. 2.0 doesnt support SQL menu constructions.


Released: 11/11/96 Version: 1.3


(JWM)   undef works in setEntry now.

(JWM)   added ars_Import to complement ars_Export

(JCM)   Profiling code added to keep track of number of
        queries made.

(JWM)   Field caching code added to make some of the functions
        more efficient.

(JCM)   New functions: ars_GetFilter(), ars_GetCharMenu(), 

Makefile.PL  view on Meta::CPAN

#       the 3.2 release.
#
#    -D_WIN32
#
#       If you are compiling ARSperl under windows, define this
#       and /don't/ define PROFILE.
#
#    -DSKIP_SV_ISA  (not automatically set)
#
#       If you get errors during compilation/runtime similar to 
#       "undefined symbol: sv_isa" then add this define.

	      'DEFINE'	=> ${AUTODEFINES},
#             'DEFINE'  => '-D_WIN32 ', # note: win32 -> no -DPROFILE


# if you have trouble under solaris when linking (bfd assertion 
# failures) try uncommenting the following:
#
#	      'LD' => "/usr/ccs/bin/ld",

Makefile.PL  view on Meta::CPAN

#  c:\Program Files\ARSystem6.0.1\Arserver\Api
# as its first arg
#
sub findAPIVersion {
  my $path_to_api_dir = shift;

  my $ar_fname = join('/', $path_to_api_dir, 'include', 'ar.h');
  open ($ar_fh, '<'. $ar_fname) or
    die "couldn't open ar.h include file from: \"$ar_fname\": $!\n";

  my $api_version = undef;

  # the line we want to parse looks like:
  #
  ##define AR_CURRENT_API_VERSION       10  /* current api version */
  while (<$ar_fh>) {
    chomp;
    if (m/^\s*#define\s*AR_CURRENT_API_VERSION\s*(\d+)/) {
      $api_version = $1;
      last;
    }

RELNOTES  view on Meta::CPAN

system (what? poor documentation? not us!! :)

The GetServerStatistics function was added to provide a simpler method
for checking server health. I might provide a server analysis tool 
built around this function in a future release. 

Joel added a cache to the internal GetField routine. This should cut
down on the number of queries made by some of the functions like
GetFieldTable and such.

In addition, doing ars_SetEntry($ctrl, ..., $fieldId, undef) will now
correctly set a field to $NULL$

1.0 Beta User Notes
-------------------

   o The library and extension seem fairly stable. However, bugs and
     memory leaks might still occur. We've only been able to build it
     under Solaris 2.x (4 and 5 to be specific) because that is what we
     run ARS under. Users who attempt builds on other systems and are
     successful should submit diffs back to us so that they can be 

changes.dat  view on Meta::CPAN

JL  automatic API-Version detection in Makefile.PL
JL  dropped support to compile ARSperl using ARAPI below version 4.5
JL  small bugfixes

released=08/01/2011 version=1.93
TS  fixed exsi.pl enumeration gap problem
TS  added lengthUnits,storageOptionForCLOB attributes to ARCharLimitsStruct,ARDisplayLimits
TS  fixed ars_GetServerInfo() keys 325-332 problem
TS  modifications for AR 7.6.3 API
TS  ars_GetEntryBLOB bugfix by Conny Martin
TS  fixed "hv_fetch error" problem in case of undefined ARValueStruct 
TS  fixed SignalTypeMap problem
TS  package directory reorganization/cleanup
TS  additional ars_Login parameters by Conny Martin
TS  implemented ars_GetList/Get/Create/Set/DeleteImage
TS  fixed incorrect AR_ARITH_OP_NEGATE handling in rev_ARArithOpStruct
TS  fixed wrong operand evaluation for AR_ARITH_OP_NEGATE in perl_ARArithOpStruct
TS  fixed ars_SetServerInfo() memory violation in case of more than one key/value pair
TS  ars_GetFieldTable performance improvement by using ARGetMultipleFields
TS  removed unnecessary second invocation of ARGetField in ars_GetField
TS  code cleanup (#ifdef statements) in ARGetFieldCached, ars_GetField, ars_GetFieldByName

changes.dat  view on Meta::CPAN

released=05/06/2008 version=1.91
TS  fixed ars_padEntryid to work correctly if entry ID prefix is defined
TS  replaced malloc-on-windows patch by UNDEF_PERL_MALLOC compilation option in Makefile.PL
TS  fixed pointer initialization error in ars_SetVUI
TS  modified ars_Create/Get/SetFilter for API 7.1
TS  fixed ars_GetAlertCount
MB  removed legacy ars_NT Notifier and ars_AdminExtension calls
!MB  added ars_VerifyUser implementation by Thilo Stapff
!MB  changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION
MB  fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they 
    return undef on failure.
JCM buffer overflow in perl_BuildEntryList
JCM malloc-on-windows patch by John Unsworth
TS  fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )")
TS  bugfix in dup_Value (support.c) for API version <= 5.0.1
TS  changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1
TS  updated MANIFEST file
TS  replaced strdup() by arsperl_strdup() for win32 to fix problems with VisualStudio8
TS  changed type of "owner" attribute: ARNameType -> ARAccessNameType
TS  corrected function signature for ars_SetVUI, ars_CreateSchema
TS  fixed memory leak in sv_to_ARValue (support.c)

changes.dat  view on Meta::CPAN

JWM bug fixes for 1.32beta

released=02/10/97        version=1.32beta
JWM 3.0 integration

released=11/11/96        version=1.31
JCM minor stuff: added an ifndef in the GetCharMenu routine
            for ars 2.0 users. 2.0 doesnt support SQL menu constructions.

released=11/11/96	version=1.3
JWM undef works in setEntry now.
JWM added ars_Import to complement ars_Export
JCM Profiling code added to keep track of number of
	    queries made.
JWM Field caching code added to make some of the functions
	    more efficient.
JCM New functions: ars_GetFilter(), ars_GetCharMenu(), 
		ars_GetServerStatistics
JWM Internal GetField call now caches results to minimize
		number of queries made.
JCM Examples of new functions. 

example/Dump_Users_OO.pl  view on Meta::CPAN

  print "i caught an exception:\ntype=$type msg=$msg\ntraceback:\n$trace\n"; 
  exit;
}

my $LoginNameField = "Login name"; # earlier versions of ars used "Login Name"

my $connection = new ARS (-server   => shift,
			  -username => shift, 
			  -password => shift,
			  -catch => { ARS::AR_RETURN_ERROR => "main::mycatch" },
			  -ctrl => undef,
			  -debug => undef);

print "Opening \"User\" form ..\n";

my ($u) = $connection->openForm(-form => "User");

$u->setSort($LoginNameField, &ARS::AR_SORT_ASCENDING);

my @entries = $u->query(); # empty query means "get everything"

printf("%-30s %-45s\n", $LoginNameField, "Full name");

example/GetFilter.pl  view on Meta::CPAN

	foreach my $s (@{$finfo->{'schemaList'}}) {
		print "\"$s\" ";
	}
	print "\n";
}
print "opSet       : ".Decode_opSetMask($finfo->{"opSet"})."\n";
print "Enable      : ".$finfo->{"enable"}."\n";

if(defined($finfo->{'query'})) {
	$dq = ars_perl_qualifier($ctrl, $finfo->{"query"});
	$dq = undef if(isempty($dq));
} else {
	$dq = undef;
}

if(defined($finfo->{'schema'})) {
	if(defined($dq)) {
		$qualtext = ars_Decode_QualHash($ctrl, $finfo->{"schema"}, $dq);
		print "Query       : ".$qualtext."\n";
	} else {
		print "Query       : [none defined]\n";
	}
} 

example/Show_ALink.pl  view on Meta::CPAN

    printl 2, "y coord: ".$display->{y}."\n";
    printl 2, "Visible?: ".$display->{option}."\n";
    printl 2, "Button Label: ".$display->{label}."\n";
    printl 2, "Type: ".$display->{type}."\n";
}
print "\n";

#print  "Qualification: ".$a->{query}."\n";

$dq = ars_perl_qualifier($ctrl, $a->{query});
$dq = undef if(isempty($dq));

if(defined($dq)) {
	if(defined($a->{'schema'})) {
		$dq_text = ars_Decode_QualHash($ctrl, $a->{schema}, $dq);
		print  "    Qual Text: $dq_text\n";
	}
	elsif(defined($a->{'schemaList'})) {
		foreach my $s (@{$a->{'schemaList'}}) {
			$dq_text = ars_Decode_QualHash($ctrl, $s, $dq);
			print "     Qual Text (decoded against \"$s\": $dq_text\n";

example/WhoUsesIt.pl  view on Meta::CPAN

$pname =~ s/.*\///g;

Getopts('s:a:f:m:e:p:M:Dhv');

$debug = $opt_D;
($server, $username, $password) = @ARGV;

$SCHEMA = defined($opt_s)?$opt_s:".*";

if($debug) {
    print STDERR "a: ".(defined($opt_a)?"$opt_a":"undef")."\n";
    print STDERR "f: ".(defined($opt_f)?"$opt_f":"undef")."\n";
    print STDERR "m: ".(defined($opt_m)?"$opt_m":"undef")."\n";
    print STDERR "e: ".(defined($opt_e)?"$opt_e":"undef")."\n";
    print STDERR "p: ".(defined($opt_p)?"$opt_p":"undef")."\n";
    print STDERR "s: ".(defined($opt_p)?"$opt_s":"undef")."\n";
    print STDERR "M: ".(defined($opt_M)?"$opt_M":"undef")."\n";
    print STDERR "d: ".(defined($opt_d)?"defined":"undef")."\n";
    print STDERR "v: ".(defined($opt_v)?"defined":"undef")."\n";
    print STDERR "h: ".(defined($opt_h)?"defined":"undef")."\n";
}

if((!defined($opt_a) &&
    !defined($opt_f) &&
    !defined($opt_m) &&
    !defined($opt_p) &&
    !defined($opt_M) &&
    !defined($opt_e)) ||
   defined($opt_h)) {
    Usage();

example/ars_GetEntryBLOB.pl  view on Meta::CPAN

#sub AR_LOC_FILENAME { 1;}
#sub AR_LOC_BUFFER { 2;}

sub ra {
  my $fid = shift;

  print "\t[Retrieving attachment.]\n";

  
  # file: $a = 0 || 1
  # buff: $a = undef || attachment


  unlink('/tmp/attachtest', '/tmp/attachtest2');

  ars_GetEntryBLOB($c, $schema, $entry,
		   $fid, 
		   ARS::AR_LOC_FILENAME,
		   "/tmp/attachtest") || 
		     die ("GetEntryBLOB: $ars_errstr");

example/ars_GetListEntryWithMultiSchemaFields.pl  view on Meta::CPAN

my $ctrl = ars_Login( $server, $user, $passwd, '', '', $tcpport );
die qq/ars_Login($server,$user,'***',$tcpport): $ars_errstr\n/ if ! $ctrl;

die qq/This example works for the ARS 7.5 API only\n/ unless ars_APIVersion() == 14;


my $aSchema = [{
	queryFromAlias => 'U',
	schemaName     => 'User',
	joinType       => 0,
	joinQual       => undef,
}, {
	queryFromAlias => 'G',
	schemaName     => 'Group',
	joinType       => 0,
	joinQual       => {
		oper   => 'rel_op',
		rel_op => {
			oper => 'like',
			left => {
				fieldId => 'U.104',

example/ars_GetListEntryWithMultiSchemaFields.pl  view on Meta::CPAN

#							},
#						},
#					},
#				},
#			},
		}, 
	},
}];


my $hQualifier = undef; 
my $hQualifier2 = {
	oper   => 'rel_op',
	rel_op => {
		oper => '==',
		left => {
			fieldId => 'G.106',
		},
		right => {
			dataType => 'integer',
			value    => 3,

example/ars_QualDecode.pl  view on Meta::CPAN

#
# AUTHOR
#   jeff murphy
#
# $Log: ars_QualDecode.pl,v $
# Revision 1.7  2000/06/01 16:54:03  jcmurphy
# *** empty log message ***
#
# Revision 1.6  1998/04/20 17:13:25  jcmurphy
# patch by jkeener@utsi.com for
# "case where value = undef (NULL)."
# /
#
# Revision 1.5  1998/02/25 19:21:14  jcmurphy
# minor corrections
#
# Revision 1.4  1998/01/07 15:07:00  jcmurphy
# modifications by dave adams to arith printing stuff
#
# Revision 1.3  1997/02/20 20:17:27  jcmurphy
# added more descriptive comments and also handled keywords correctly.

example/ars_QualDecode.pl  view on Meta::CPAN

#
# NOTES
#   This routine over parenthesises, but should
#   yield correct results nonetheless.
#
#   We need the ctrl struct and schema name so
#   we can reverse map from fieldId's to field names.
#
# RETURNS
#   a scalar on success
#   undef on failure
#
# AUTHOR
#   jeff murphy

sub ars_Decode_QualHash {
    my $c = shift;
    my $s = shift;
    my $q = shift;
    my $fids;
    my %fids_orig;
    my $fieldName;

    print "ars_Decode_QualHash(c=$c, s=$s, q=$q)\n" if !$debug;

    if(!(defined($c) && (ref($c) eq "ARControlStructPtr"))) {
	    print "ars_Decode_QualHash: ctrl is not an ARControlStructPtr\n";
	    return undef;
    }

    if(!(defined($s) && ($s ne ""))) {
	    print "ars_Decode_QualHash: schema is not a SCALAR\n";
	    return undef;
    }

    if(!(defined($q) && (ref($q) eq "HASH"))) {
	    print "ars_Decode_QualHash: qualifier is not a HASH\n";
	    return undef;
    }

    (%fids_orig = ars_GetFieldTable($c, $s)) ||
      die "GetFieldTable: $ars_errstr";
    foreach $fieldName (keys %fids_orig) {
	    $fids{$fids_orig{$fieldName}} = $fieldName;
    }
    return ars_DQH($q, %fids);
}

sub ars_DQH {
    my $h    = shift;
    my $fids = shift;
    my $e    = undef;

    print "ars_DQH(h=$h, fids=$fids)\n" if $debug;

    if($h) {

	print "\n
    left   = $h->{left}
    oper   = $h->{oper}
    right  = $h->{right}
    not    = $h->{not}

example/attachTest.pl  view on Meta::CPAN

#sub AR_LOC_FILENAME { 1;}
#sub AR_LOC_BUFFER { 2;}

sub ra {
  my $fid = shift;

  print "\t[Retrieving attachment.]\n";

  
  # file: $a = 0 || 1
  # buff: $a = undef || attachment


  ars_GetEntryBLOB($c, "ARSperl Test", $id,
		   $fid, 
		   ARS::AR_LOC_FILENAME,
		   "/tmp/attachtest") || 
		     die ("GetEntryBLOB: $ars_errstr");

  my $a = ars_GetEntryBLOB($c, "ARSperl Test", $id,,
			   $fid, 

example/getAttachment-OO.pl  view on Meta::CPAN

}

exit 0;

sub ra {
  my $field = shift;

  print "\t[Retrieving attachment.]\n";

  # file: $a = 0 || 1
  # buff: $a = undef || attachment

  $s->getAttachment(-entry => "000000000000002",
		    -field => $field,
		    -file  => "/tmp/attachtest");

  my $a = $s->getAttachment(-entry => "000000000000002",
			    -field => $field);

  print "\tattachment size = ".length($a)."\n";
  open(FD, ">/tmp/attachtest2") || die "open: $!";

html/changes.html  view on Meta::CPAN

            </tr><tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed exsi.pl enumeration gap problem 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added lengthUnits,storageOptionForCLOB attributes to ARCharLimitsStruct,ARDisplayLimits 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed ars_GetServerInfo() keys 325-332 problem 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>modifications for AR 7.6.3 API 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>ars_GetEntryBLOB bugfix by Conny Martin 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed "hv_fetch error" problem in case of undefined ARValueStruct  
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed SignalTypeMap problem 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>package directory reorganization/cleanup 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>additional ars_Login parameters by Conny Martin 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>implemented ars_GetList/Get/Create/Set/DeleteImage 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed incorrect AR_ARITH_OP_NEGATE handling in rev_ARArithOpStruct 

html/changes.html  view on Meta::CPAN

</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed ars_GetAlertCount 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(MB)</td><td width='90%'><font color='black'>removed legacy ars_NT Notifier and ars_AdminExtension calls 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(MB)</td><td width='90%'><font color='red'>added ars_VerifyUser implementation by Thilo Stapff 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(MB)</td><td width='90%'><font color='red'>changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(MB)</td><td width='90%'><font color='black'>fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they  
return undef on failure. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>buffer overflow in perl_BuildEntryList 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>malloc-on-windows patch by John Unsworth 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )") 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in dup_Value (support.c) for API version <= 5.0.1 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1 
</font></td></tr>

html/changes.html  view on Meta::CPAN

      BGCOLOR='black'>
      <TR>
	<TD width='100%'>
	  <TABLE CELLSPACING='0' CELLPADDING='3' WIDTH='100%' BORDER='0'
	    BGCOLOR='lightblue'>
	    <tr><td colspan='2'>
  <table width='100%' border='0'><tr>
	      <td width='50%'>Released: <B>11/11/96</B></td>
              <td width='50%'>Version: <B>1.3
</B></td>
  </tr></table></td>
            </tr><tr bgcolor='#eeeeee'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>undef works in setEntry now. 
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>added ars_Import to complement ars_Export 
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>Profiling code added to keep track of number of 
queries made. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>Field caching code added to make some of the functions 
more efficient. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>New functions: ars_GetFilter(), ars_GetCharMenu(),  
ars_GetServerStatistics </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>Internal GetField call now caches results to minimize 

html/manual/ars_APIVersion.html  view on Meta::CPAN

      <dt class="c1">
        On success
      </dt>
      <dd>
        Returns an integer.
      </dd>
      <dt class="c1">
        On failure
      </dt>
      <dd>
        Returns undef.
      </dd>
    </dl>
    <p>
      Example:
    </p>
    <pre>
 $v = ars_APIVersion();<br />        print "This installation of ARSperl was compiled against ARS API version $v\n";<br /> 
</pre><i>ars_APIVersion was introduced in version 1.62 of ARSperl</i>
    <p>
      <a href="toc.html">Back to Table of Contents</a>

html/manual/ars_CreateAlertEvent.html  view on Meta::CPAN

<TITLE>ARSperl Manual - ars_CreateAlertEvent</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

    <H2><code>ars_CreateAlertEvent(ctrl,user,alertText,priority,sourceTag,serverName,formName,objectId)</code></H2>
    <font face="Minion-Regular" size="3">Decodes a formatted alert message and returns the component parts of the message to the alert client.</font>
      <DL>
          <DT><B>On success</B><DD>
		returns an entryid&nbsp;
          <DT><B>On failure</B><DD>
		returns undef
      </DL>
      <P>
<em>ars_CreateAlertEvent was intrduced in version 1.8 of ARSperl.</em>
      <P>Example:

    <PRE>
      (@userlist = <code>ars_CreateAlertEvent</code>($ctrl, $user, $alertText, $priority, $sourceTag, $server, $form, $objectId)) || die $ars_errstr;
      </PRE>
<P>
<HR WIDTH="30%">

html/manual/ars_CreateEntry.html  view on Meta::CPAN

as ``submitting a new ticket''. Pairs of field ids and values should
follow the schema name. Data types are automatically converted.
<dl>

  <dt><b>On success</b></dt>

  <dd> Returns the new entry id. </dd>

  <dt><b>On failure</b></dt>

  <dd> Returns <code>undef</code>. </dd>

</dl>

<p>Example 1: </p>

<pre> ($entry_id = ars_CreateEntry($c, "Schema01", $id, $val)) || <br> die $ars_errstr;<br></pre>

<p>Example 2:</p>

<pre>&nbsp; my %fieldname_to_id = ars_GetFieldTable($c, "User") || <br> die $ars_errstr;<br> my $entry_id = ars_CreateEntry($c, "User",<br> $fieldname_to_id{"Login Name"}, "johnd",<br> $fieldname_to_id{"Full Name"}, "John Doe",<br> $fieldname_to_id{"...

html/manual/ars_DateToJulianDate.html  view on Meta::CPAN

      <dt class="c1">
        On success
      </dt>
      <dd>
        Returns an integer.
      </dd>
      <dt class="c1">
        On failure
      </dt>
      <dd>
        Returns undef.
      </dd>
    </dl>
    <p>
      Example:
    </p>
    <pre>
    my $juliandate = ars_DateToJulianDate($ctrl, 1066, 10, 14);
    print &quot;The Battle of Hastings was on October 14th, 1066.\n&quot;;
    print &quot;This is $juliandate days after January 1st, 4713 BCE.\n&quot;;
</pre>

html/manual/ars_EncodeDiary.html  view on Meta::CPAN


   <H2><CODE>ars_EncodeDiary(diaryEntryHash1, ... diaryEntryHashN)</CODE></H2>

	Encode a list of <A HREF="ds_diaryentry_hash.html">diaryEntryHash</A>'s
	into a single scalar (internal ARS diary field representation).

      <DL>
         <DT><B>On success</B><DD>
		Returns the encoded scalar.
         <DT><B>On failure</B><DD>
                Returns undef.
      </DL>

      <P>Example:

      <PRE>
	$a-&gt;{timestamp} = time();
	$a-&gt;{user} = "foobar";
	$a-&gt;{value} = "diary entry 1";

	$b-&gt;{timestamp} = time();

html/manual/ars_ExecuteProcess.html  view on Meta::CPAN

        On success
      </dt>
      <dd>
        Depending upon the runOption specified returns a list of <code>returnStatus</code> and
        <code>returnString</code> or <b>1</b>
      </dd>
      <dt class="c1">
        On failure
      </dt>
      <dd>
        Returns undef.
      </dd>
    </dl>
    <p>
      Example:
    </p>
    <pre>
        (($returnCode, $returnString) = ars_ExecuteProcess($ctrl, "/bin/ls -l /")) || 
                die "$ars_errstr";
      
</pre>

html/manual/ars_Export.html  view on Meta::CPAN

	It's recommended that if you want to export schema definitions you
	should use "<code>schema</code>" and not use the other 
	<code>schema_*</code> types. <P> If you are curious about what
	non-obvious types are used for, you should read the 
	<U>ARSystem Programmers Manual</U>.
	<P>
      <DL>
          <DT><B>On success</B><DD>
		returns a scalar string
          <DT><B>On failure</B><DD>
		returns undef
      </DL>
      <P>

<P>

<I>ars_Import was introduced in version 1.3 of ARSperl</I>
<P>
<HR WIDTH="30%">
<P>

html/manual/ars_GetActiveLink.html  view on Meta::CPAN


   <H2><CODE>ars_GetActiveLink(ctrl,name)</CODE></H2>

      This function fetches information regarding a specified active link. 

      <DL>
          <DT><B>On success</B><DD>
              A scalar pointer to the 
<A HREF="ds_al.html">active link attributes</a>.
          <DT><B>On failure</B><DD>
              <CODE>undef</CODE>.
      </DL>

      <P>Example:

      <PRE>
      $alink = ars_GetActiveLink($c, "AR-Assets-GetContactinfo");
      </PRE>

<P>
<HR WIDTH="30%">

html/manual/ars_GetCharMenu.html  view on Meta::CPAN

<A HREF="ds_getcharmenu_hash.html">HASH</a> 
consisting of menu attributes. <br>
<CODE>name</CODE>
is the actual menu name as shown in the ARAdmin tool.
<P>

  <DL>
  <DT><B>On success</B><DD>
		returns a HASH
  <DT><B>On failure</B><DD>
		returns undef
  </DL>
  <P>

<em>ars_GetCharMenu was introduced in version 1.3 of ARSperl.</em>

<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="&lt;--" SRC="arrow.gif" ALIGN=CENTER> Table of Contents </A>
<p>

html/manual/ars_GetCharMenuItems.html  view on Meta::CPAN

                                    .
                                    .
      </PRE>
      See <I>Show_Menu.pl</I> for a demonstration of using this function 
      and its output.<P>

      <DL>
          <DT><B>On success</B><DD>
              A reference to an array.
          <DT><B>On failure</B><DD>
              <CODE>undef</CODE>.
      </DL>

      <P>Example:

      <PRE>
      $m = ars_GetCharMenuItems($ctrl, $menu_name));
      @menu_struct = @$m;
      </PRE>

<P>



( run in 3.060 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )