our (@ISA, @EXPORT_OK, %EXPORT_TAGS);
-@ISA = qw(Exporter);
+BEGIN {
+ @ISA = qw(Exporter);
+ %EXPORT_TAGS = (
-@EXPORT_OK = qw(PATRON_STATUS_REQ CHECKOUT CHECKIN BLOCK_PATRON
- SC_STATUS REQUEST_ACS_RESEND LOGIN PATRON_INFO
- END_PATRON_SESSION FEE_PAID ITEM_INFORMATION
- ITEM_STATUS_UPDATE PATRON_ENABLE HOLD RENEW
- RENEW_ALL PATRON_STATUS_RESP CHECKOUT_RESP
- CHECKIN_RESP ACS_STATUS REQUEST_SC_RESEND
- LOGIN_RESP PATRON_INFO_RESP END_SESSION_RESP
- FEE_PAID_RESP ITEM_INFO_RESP
- ITEM_STATUS_UPDATE_RESP PATRON_ENABLE_RESP
- HOLD_RESP RENEW_RESP RENEW_ALL_RESP
- REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM
- FID_PATRON_ID FID_ITEM_ID FID_TERMINAL_PWD
- FID_PATRON_PWD FID_PERSONAL_NAME FID_SCREEN_MSG
- FID_PRINT_LINE FID_DUE_DATE FID_TITLE_ID
- FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
- FID_TERMINAL_LOCN FID_INST_ID FID_CURRENT_LOCN
- FID_PERM_LOCN FID_HOME_LIBRARY FID_HOLD_ITEMS
- FID_OVERDUE_ITEMS FID_CHARGED_ITEMS FID_FINE_ITEMS
- FID_SEQNO FID_CKSUM FID_HOME_ADDR FID_EMAIL
- FID_HOME_PHONE FID_OWNER FID_CURRENCY FID_CANCEL
- FID_TRANSACTION_ID FID_VALID_PATRON
- FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS FID_FEE_ACK
- FID_START_ITEM FID_END_ITEM FID_QUEUE_POS
- FID_PICKUP_LOCN FID_FEE_TYPE FID_RECALL_ITEMS
- FID_FEE_AMT FID_EXPIRATION FID_SUPPORTED_MSGS
- FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
- FID_OVERDUE_ITEMS_LMT FID_CHARGED_ITEMS_LMT
- FID_FEE_LMT FID_UNAVAILABLE_HOLD_ITEMS
- FID_HOLD_QUEUE_LEN FID_FEE_ID FID_ITEM_PROPS
- FID_SECURITY_INHIBIT FID_RECALL_DATE
- FID_MEDIA_TYPE FID_SORT_BIN FID_HOLD_PICKUP_DATE
- FID_LOGIN_UID FID_LOGIN_PWD FID_LOCATION_CODE
- FID_VALID_PATRON_PWD
+ SC_msgs => [qw(
+ PATRON_STATUS_REQ
+ CHECKOUT CHECKIN
+ SC_STATUS REQUEST_ACS_RESEND
+ LOGIN PATRON_INFO END_PATRON_SESSION
+ FEE_PAID ITEM_INFORMATION ITEM_STATUS_UPDATE
+ HOLD RENEW RENEW_ALL
+ PATRON_ENABLE
+ BLOCK_PATRON
+ )],
- FID_PATRON_BIRTHDATE FID_PATRON_CLASS FID_INET_PROFILE
+ ACS_msgs => [qw(
+ PATRON_STATUS_RESP
+ CHECKOUT_RESP CHECKIN_RESP
+ ACS_STATUS REQUEST_SC_RESEND
+ LOGIN_RESP PATRON_INFO_RESP END_SESSION_RESP
+ FEE_PAID_RESP ITEM_INFO_RESP ITEM_STATUS_UPDATE_RESP
+ HOLD_RESP RENEW_RESP RENEW_ALL_RESP
+ PATRON_ENABLE_RESP
+ )],
- SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
- SIP_DATETIME);
+ SC_status => [qw(SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN)],
+ formats => [qw(SIP_DATETIME)],
+ constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM)],
-%EXPORT_TAGS = (
+ field_ids => [qw(
+ FID_PATRON_ID FID_ITEM_ID
+ FID_TERMINAL_PWD FID_PATRON_PWD
+ FID_PERSONAL_NAME FID_DUE_DATE
+ FID_SCREEN_MSG FID_PRINT_LINE
+ FID_TITLE_ID FID_BLOCKED_CARD_MSG
+ FID_TERMINAL_LOCN FID_INST_ID
+ FID_CURRENT_LOCN FID_LIBRARY_NAME
+ FID_PERM_LOCN
+ FID_HOLD_ITEMS FID_HOLD_ITEMS_LMT
+ FID_OVERDUE_ITEMS FID_OVERDUE_ITEMS_LMT
+ FID_CHARGED_ITEMS FID_CHARGED_ITEMS_LMT
+ FID_FINE_ITEMS FID_SEQNO
+ FID_CKSUM FID_HOME_ADDR
+ FID_EMAIL FID_HOME_PHONE
+ FID_OWNER FID_CURRENCY
+ FID_CANCEL
+ FID_TRANSACTION_ID FID_VALID_PATRON
+ FID_RENEWED_ITEMS
+ FID_UNRENEWED_ITEMS
+ FID_FEE_ACK
+ FID_START_ITEM FID_END_ITEM FID_QUEUE_POS
+ FID_PICKUP_LOCN FID_FEE_TYPE
+ FID_RECALL_ITEMS
+ FID_FEE_AMT FID_FEE_LMT
+ FID_EXPIRATION
+ FID_SUPPORTED_MSGS
+ FID_HOLD_TYPE
+ FID_UNAVAILABLE_HOLD_ITEMS
+ FID_HOLD_QUEUE_LEN
+ FID_FEE_ID FID_ITEM_PROPS
+ FID_RECALL_DATE FID_SECURITY_INHIBIT
+ FID_MEDIA_TYPE FID_SORT_BIN
+ FID_HOLD_PICKUP_DATE
+ FID_LOGIN_UID FID_LOGIN_PWD
+ FID_LOCATION_CODE
+ FID_VALID_PATRON_PWD
+ FID_PATRON_BIRTHDATE
+ FID_PATRON_CLASS
+ FID_INET_PROFILE
- SC_msgs => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
- BLOCK_PATRON SC_STATUS
- REQUEST_ACS_RESEND LOGIN
- PATRON_INFO
- END_PATRON_SESSION FEE_PAID
- ITEM_INFORMATION
- ITEM_STATUS_UPDATE
- PATRON_ENABLE HOLD RENEW
- RENEW_ALL)],
+ FID_COLLECTION_CODE
+ FID_CALL_NUMBER
+ FID_DESTINATION_LOCATION
+ FID_ALERT_TYPE
+ FID_HOLD_PATRON_ID
+ FID_HOLD_PATRON_NAME
+ )],
+ );
- ACS_msgs => [qw(PATRON_STATUS_RESP CHECKOUT_RESP
- CHECKIN_RESP ACS_STATUS
- REQUEST_SC_RESEND LOGIN_RESP
- PATRON_INFO_RESP
- END_SESSION_RESP
- FEE_PAID_RESP ITEM_INFO_RESP
- ITEM_STATUS_UPDATE_RESP
- PATRON_ENABLE_RESP HOLD_RESP
- RENEW_RESP RENEW_ALL_RESP)],
-
- constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM
- REQUEST_SC_RESEND_CKSUM)],
-
- field_ids => [qw( FID_PATRON_ID FID_ITEM_ID
- FID_TERMINAL_PWD
- FID_PATRON_PWD
- FID_PERSONAL_NAME
- FID_SCREEN_MSG
- FID_PRINT_LINE FID_DUE_DATE
- FID_TITLE_ID
- FID_BLOCKED_CARD_MSG
- FID_LIBRARY_NAME
- FID_TERMINAL_LOCN
- FID_INST_ID
- FID_CURRENT_LOCN
- FID_PERM_LOCN
- FID_HOME_LIBRARY
- FID_HOLD_ITEMS
- FID_OVERDUE_ITEMS
- FID_CHARGED_ITEMS
- FID_FINE_ITEMS FID_SEQNO
- FID_CKSUM FID_HOME_ADDR
- FID_EMAIL FID_HOME_PHONE
- FID_OWNER FID_CURRENCY
- FID_CANCEL
- FID_TRANSACTION_ID
- FID_VALID_PATRON
- FID_RENEWED_ITEMS
- FID_UNRENEWED_ITEMS
- FID_FEE_ACK FID_START_ITEM
- FID_END_ITEM FID_QUEUE_POS
- FID_PICKUP_LOCN
- FID_FEE_TYPE
- FID_RECALL_ITEMS
- FID_FEE_AMT FID_EXPIRATION
- FID_SUPPORTED_MSGS
- FID_HOLD_TYPE
- FID_HOLD_ITEMS_LMT
- FID_OVERDUE_ITEMS_LMT
- FID_CHARGED_ITEMS_LMT
- FID_FEE_LMT
- FID_UNAVAILABLE_HOLD_ITEMS
- FID_HOLD_QUEUE_LEN
- FID_FEE_ID FID_ITEM_PROPS
- FID_SECURITY_INHIBIT
- FID_RECALL_DATE
- FID_MEDIA_TYPE FID_SORT_BIN
- FID_HOLD_PICKUP_DATE
- FID_LOGIN_UID FID_LOGIN_PWD
- FID_LOCATION_CODE
- FID_VALID_PATRON_PWD
-
- FID_PATRON_BIRTHDATE
- FID_PATRON_CLASS
- FID_INET_PROFILE)],
-
- SC_status => [qw(SC_STATUS_OK SC_STATUS_PAPER
- SC_STATUS_SHUTDOWN)],
-
- formats => [qw(SIP_DATETIME)],
-
- all => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
- BLOCK_PATRON SC_STATUS
- REQUEST_ACS_RESEND LOGIN PATRON_INFO
- END_PATRON_SESSION FEE_PAID
- ITEM_INFORMATION ITEM_STATUS_UPDATE
- PATRON_ENABLE HOLD RENEW RENEW_ALL
- PATRON_STATUS_RESP CHECKOUT_RESP
- CHECKIN_RESP ACS_STATUS
- REQUEST_SC_RESEND LOGIN_RESP
- PATRON_INFO_RESP END_SESSION_RESP
- FEE_PAID_RESP ITEM_INFO_RESP
- ITEM_STATUS_UPDATE_RESP
- PATRON_ENABLE_RESP HOLD_RESP
- RENEW_RESP RENEW_ALL_RESP
- REQUEST_ACS_RESEND_CKSUM
- REQUEST_SC_RESEND_CKSUM FID_PATRON_ID
- FID_ITEM_ID FID_TERMINAL_PWD
- FID_PATRON_PWD FID_PERSONAL_NAME
- FID_SCREEN_MSG FID_PRINT_LINE
- FID_DUE_DATE FID_TITLE_ID
- FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
- FID_TERMINAL_LOCN FID_INST_ID
- FID_CURRENT_LOCN FID_PERM_LOCN FID_HOME_LIBRARY
- FID_HOLD_ITEMS FID_OVERDUE_ITEMS
- FID_CHARGED_ITEMS FID_FINE_ITEMS
- FID_SEQNO FID_CKSUM FID_HOME_ADDR
- FID_EMAIL FID_HOME_PHONE FID_OWNER
- FID_CURRENCY FID_CANCEL
- FID_TRANSACTION_ID FID_VALID_PATRON
- FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS
- FID_FEE_ACK FID_START_ITEM
- FID_END_ITEM FID_QUEUE_POS
- FID_PICKUP_LOCN FID_FEE_TYPE
- FID_RECALL_ITEMS FID_FEE_AMT
- FID_EXPIRATION FID_SUPPORTED_MSGS
- FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
- FID_OVERDUE_ITEMS_LMT
- FID_CHARGED_ITEMS_LMT FID_FEE_LMT
- FID_UNAVAILABLE_HOLD_ITEMS
- FID_HOLD_QUEUE_LEN FID_FEE_ID
- FID_ITEM_PROPS FID_SECURITY_INHIBIT
- FID_RECALL_DATE FID_MEDIA_TYPE
- FID_SORT_BIN FID_HOLD_PICKUP_DATE
- FID_LOGIN_UID FID_LOGIN_PWD
- FID_LOCATION_CODE FID_VALID_PATRON_PWD
- FID_PATRON_BIRTHDATE FID_PATRON_CLASS
- FID_INET_PROFILE
- SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
- SIP_DATETIME
- )]);
+ # Add the contents of the other ":class" tags to make an ":all" class (deleting duplicates)
+ # This is the textbook example from http://perldoc.perl.org/Exporter.html
+ my %seen;
+ push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
+ Exporter::export_ok_tags('all'); # now add :all to @EXPORT_OK
+}
#
# Declare message types
FID_PATRON_BIRTHDATE => 'PB',
FID_PATRON_CLASS => 'PC',
- # SIP Extension for reporting patron internet privileges
+ # SIP Extension for reporting patron internet privileges... application unknown
FID_INET_PROFILE => 'PI',
+
+ # SIP Extensions by 3M spec: Document Revision 1.20, 02/14/2005
+ FID_COLLECTION_CODE => 'CR',
+ FID_CALL_NUMBER => 'CS',
+ FID_DESTINATION_LOCATION => 'CT',
+ FID_ALERT_TYPE => 'CV',
+ FID_HOLD_PATRON_ID => 'CY',
+ FID_HOLD_PATRON_NAME => 'DA',
};
#
# SC Status Codes
#
use constant {
- SC_STATUS_OK => '0',
- SC_STATUS_PAPER => '1',
+ SC_STATUS_OK => '0',
+ SC_STATUS_PAPER => '1',
SC_STATUS_SHUTDOWN => '2',
};
use constant {
SIP_DATETIME => "%Y%m%d %H%M%S",
};
+
+1;