#!/usr/local/bin/perl # # $Header: /cvsroot/arsperl/ARSperl/example/ars_decodeStatusHistory.pl,v 1.3 2007/08/02 14:48:21 mbeijen Exp $ # # NAME # ars_decodeStatusHistory.pl [server] [username] [password] [schema] [eid] # # DESCRIPTION # retrieves the entryid from the given schema and decodes it's status # history values. # # AUTHOR # Jeff murphy # # $Log: ars_decodeStatusHistory.pl,v $ # Revision 1.3 2007/08/02 14:48:21 mbeijen # modified examples for ExecuteProcess and decodeStatusHistory # # Revision 1.2 1998/09/14 17:39:20 jcmurphy # changed #!perl path # # Revision 1.1 1998/09/11 15:51:42 jcmurphy # Initial revision # # # use ARS; use warnings; use strict; die "usage: ars_decodeStatusHistory.pl [server] [username] [password] [form] [entry]\n" unless ($#ARGV == 4); # Log in to the server (my $ctrl = ars_Login(shift, shift, shift)) || die "login: $ars_errstr"; (my $form, my $entry) = (shift, shift); # get the information for this entry. ars_GetEntry returns a hash of field ID's and its values. # in fact, we only are interested in this example in field 15 which contains the Status History. (my %entry = ars_GetEntry($ctrl, $form, $entry, 15)) || die "GetEntry: $ars_errstr (no entry $entry in form $form ?)"; # load the field information for field 7 (Status) so we can determine what the names are for # the different statuses. (my $field_info = ars_GetField($ctrl, $form, 7)) || die "GetField: $ars_errstr "; # retrieving all status values for enumerated field Status my @enum_vals = @{$field_info->{limit}{enumLimits}{regularList}}; print "Status values: ".join(', ', @enum_vals)."\n"; #The Status History field is always field number 15. my @status_values = ars_decodeStatusHistory($entry{15}); my $i; # loop trough the created Status Values array, which is an array that contains hash refs # we'll print the Status name with it, which we retrieved earlier using ars_GetField. foreach (@status_values) { print $enum_vals[$i++].": \n"; if ($_->{USER}) { print "\tUSER: ".$_->{USER}."\n"; print "\tTIME: ".localtime($_->{TIME})."\n"; # with localtime we convert Epoch to human-readable } else { print "\tNo Status History entry\n"; } } # log off nicely. ars_Logoff($ctrl); exit 0;