home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / CPI-C.ZIP / CPICDEFS.C < prev    next >
Text File  |  1992-06-21  |  11KB  |  289 lines

  1. /*
  2.  *  PROGRAM:   JQCPIC -- John Q's Portable CPI-C Abuser
  3.  *
  4.  *  MODULE:    CPICDEFS.C -- CPI-C constants, typedefs, and enums
  5.  *
  6.  *  COPYRIGHTS:
  7.  *             This module contains code made available by IBM
  8.  *             Corporation on an AS IS basis.  Any one receiving the
  9.  *             module is considered to be licensed under IBM copyrights
  10.  *             to use the IBM-provided source code in any way he or she
  11.  *             deems fit, including copying it, compiling it, modifying
  12.  *             it, and redistributing it, with or without
  13.  *             modifications.  No license under any IBM patents or
  14.  *             patent applications is to be implied from this copyright
  15.  *             license.
  16.  *
  17.  *             A user of the module should understand that IBM cannot
  18.  *             provide technical support for the module and will not be
  19.  *             responsible for any consequences of use of the program.
  20.  *
  21.  *             Any notices, including this one, are not to be removed
  22.  *             from the module without the prior written consent of
  23.  *             IBM.
  24.  *
  25.  *  AUTHOR:    Dr. John Q. Walker II
  26.  *             IBM VNET: JOHNQ at RALVM6          IBM tie line: 444-4414
  27.  *             Internet: johnq@vnet.ibm.com        phone: (919) 254-4414
  28.  *
  29.  *  RELATED FILES:
  30.  *             See file JQCPIC.DOC for detailed information.
  31.  *
  32.  *  CHANGE HISTORY:
  33.  *  Date       Description
  34.  *  05/12/92   Added prologue.
  35.  */
  36.  
  37. #include <stdio.h>
  38. #include "jqcpic.h"
  39.  
  40. #define MAXINT (32767)  /* used as an end marker for message arrays */
  41.  
  42. CPICERR_MESSAGE cpicerr_verbs_short[] = {
  43.     MSG_CMACCP, "CMACCP",
  44.     MSG_CMALLC, "CMALLC",
  45.     MSG_CMCFM,  "CMCFM" ,
  46.     MSG_CMCFMD, "CMCFMD",
  47.     MSG_CMDEAL, "CMDEAL",
  48.     MSG_CMECS,  "CMECS" ,
  49.     MSG_CMECT,  "CMECT" ,
  50.     MSG_CMEMN,  "CMEMN" ,
  51.     MSG_CMEPLN, "CMEPLN",
  52.     MSG_CMESL,  "CMESL" ,
  53.     MSG_CMFLUS, "CMFLUS",
  54.     MSG_CMINIT, "CMINIT",
  55.     MSG_CMPTR,  "CMPTR" ,
  56.     MSG_CMRCV,  "CMRCV" ,
  57.     MSG_CMRTS,  "CMRTS" ,
  58.     MSG_CMSCT,  "CMSCT" ,
  59.     MSG_CMSDT,  "CMSDT" ,
  60.     MSG_CMSED,  "CMSED" ,
  61.     MSG_CMSEND, "CMSEND",
  62.     MSG_CMSERR, "CMSERR",
  63.     MSG_CMSF,   "CMSF"  ,
  64.     MSG_CMSLD,  "CMSLD" ,
  65.     MSG_CMSMN,  "CMSMN" ,
  66.     MSG_CMSPLN, "CMSPLN",
  67.     MSG_CMSPTR, "CMSPTR",
  68.     MSG_CMSRC,  "CMSRC" ,
  69.     MSG_CMSRT,  "CMSRT" ,
  70.     MSG_CMSSL,  "CMSSL" ,
  71.     MSG_CMSST,  "CMSST" ,
  72.     MSG_CMSTPN, "CMSTPN",
  73.     MSG_CMTRTS, "CMTRTS",
  74.     MSG_XCSCSU, "XCSCSU",
  75.     MSG_XCSCSP, "XCSCSP",
  76.     MSG_XCSCST, "XCSCST",
  77.     MAXINT,     "ERROR"
  78. };
  79.  
  80. CPICERR_MESSAGE cpicerr_verbs_long[] = {
  81.     MSG_CMACCP,  "Accept_Conversation"               ,
  82.     MSG_CMALLC,  "Allocate"                          ,
  83.     MSG_CMCFM,   "Confirm"                           ,
  84.     MSG_CMCFMD,  "Confirmed"                         ,
  85.     MSG_CMDEAL,  "Deallocate"                        ,
  86.     MSG_CMECS,   "Extract_Conversation_State"        ,
  87.     MSG_CMECT,   "Extract_Conversation_Type"         ,
  88.     MSG_CMEMN,   "Extract_Mode_Name"                 ,
  89.     MSG_CMEPLN,  "Extract_Partner_LU_Name"           ,
  90.     MSG_CMESL,   "Extract_Sync_Level"                ,
  91.     MSG_CMFLUS,  "Flush"                             ,
  92.     MSG_CMINIT,  "Initialize_Conversation"           ,
  93.     MSG_CMPTR,   "Prepare_To_Receive"                ,
  94.     MSG_CMRCV,   "Receive"                           ,
  95.     MSG_CMRTS,   "Request_To_Send"                   ,
  96.     MSG_CMSCT,   "Set_Conversation_Type"             ,
  97.     MSG_CMSDT,   "Set_Deallocate_Type"               ,
  98.     MSG_CMSED,   "Set_Error_Direction"               ,
  99.     MSG_CMSEND,  "Send_Data"                         ,
  100.     MSG_CMSERR,  "Send_Error"                        ,
  101.     MSG_CMSF,    "Set_Fill"                          ,
  102.     MSG_CMSLD,   "Set_Log_Data"                      ,
  103.     MSG_CMSMN,   "Set_Mode_Name"                     ,
  104.     MSG_CMSPLN,  "Set_Partner_LU_Name"               ,
  105.     MSG_CMSPTR,  "Set_Prepare_To_Receive_Type"       ,
  106.     MSG_CMSRC,   "Set_Return_Control"                ,
  107.     MSG_CMSRT,   "Set_Receive_Type"                  ,
  108.     MSG_CMSSL,   "Set_Sync_Level"                    ,
  109.     MSG_CMSST,   "Set_Send_Type"                     ,
  110.     MSG_CMSTPN,  "Set_TP_Name"                       ,
  111.     MSG_CMTRTS,  "Test_Request_To_Send_Received"     ,
  112.     MSG_XCSCSU,  "Set Conversation Security Userid"  ,
  113.     MSG_XCSCSP,  "Set Conversation Security Password",
  114.     MSG_XCSCST,  "Set Conversation Security Type"    ,
  115.     MAXINT,      "* Invalid verb name"
  116. };
  117.  
  118. CPICERR_MESSAGE cpicerr_return_codes[] = {
  119.     CM_OK,                          "CM_OK"                         ,
  120.     CM_ALLOCATE_FAILURE_NO_RETRY,   "CM_ALLOCATE_FAILURE_NO_RETRY"  ,
  121.     CM_ALLOCATE_FAILURE_RETRY,      "CM_ALLOCATE_FAILURE_RETRY"     ,
  122.     CM_CONVERSATION_TYPE_MISMATCH,  "CM_CONVERSATION_TYPE_MISMATCH" ,
  123.     CM_PIP_NOT_SPECIFIED_CORRECTLY, "CM_PIP_NOT_SPECIFIED_CORRECTLY",
  124.     CM_SECURITY_NOT_VALID,          "CM_SECURITY_NOT_VALID"         ,
  125.     CM_SYNC_LVL_NOT_SUPPORTED_LU,   "CM_SYNC_LVL_NOT_SUPPORTED_LU"  ,
  126.     CM_SYNC_LVL_NOT_SUPPORTED_PGM,  "CM_SYNC_LVL_NOT_SUPPORTED_PGM" ,
  127.     CM_TPN_NOT_RECOGNIZED,          "CM_TPN_NOT_RECOGNIZED"         ,
  128.     CM_TP_NOT_AVAILABLE_NO_RETRY,   "CM_TP_NOT_AVAILABLE_NO_RETRY"  ,
  129.     CM_TP_NOT_AVAILABLE_RETRY,      "CM_TP_NOT_AVAILABLE_RETRY"     ,
  130.     CM_DEALLOCATED_ABEND,           "CM_DEALLOCATED_ABEND"          ,
  131.     CM_DEALLOCATED_NORMAL,          "CM_DEALLOCATED_NORMAL"         ,
  132.     CM_PARAMETER_ERROR,             "CM_PARAMETER_ERROR"            ,
  133.     CM_PRODUCT_SPECIFIC_ERROR,      "CM_PRODUCT_SPECIFIC_ERROR"     ,
  134.     CM_PROGRAM_ERROR_NO_TRUNC,      "CM_PROGRAM_ERROR_NO_TRUNC"     ,
  135.     CM_PROGRAM_ERROR_PURGING,       "CM_PROGRAM_ERROR_PURGING"      ,
  136.     CM_PROGRAM_ERROR_TRUNC,         "CM_PROGRAM_ERROR_TRUNC"        ,
  137.     CM_PROGRAM_PARAMETER_CHECK,     "CM_PROGRAM_PARAMETER_CHECK"    ,
  138.     CM_PROGRAM_STATE_CHECK,         "CM_PROGRAM_STATE_CHECK"        ,
  139.     CM_RESOURCE_FAILURE_NO_RETRY,   "CM_RESOURCE_FAILURE_NO_RETRY"  ,
  140.     CM_RESOURCE_FAILURE_RETRY,      "CM_RESOURCE_FAILURE_RETRY"     ,
  141.     CM_UNSUCCESSFUL,                "CM_UNSUCCESSFUL"               ,
  142.     CM_DEALLOCATED_ABEND_SVC,       "CM_DEALLOCATED_ABEND_SVC"      ,
  143.     CM_DEALLOCATED_ABEND_TIMER,     "CM_DEALLOCATED_ABEND_TIMER"    ,
  144.     CM_SVC_ERROR_NO_TRUNC,          "CM_SVC_ERROR_NO_TRUNC"         ,
  145.     CM_SVC_ERROR_PURGING,           "CM_SVC_ERROR_PURGING"          ,
  146.     CM_SVC_ERROR_TRUNC,             "CM_SVC_ERROR_TRUNC"            ,
  147. #ifndef OS400
  148.     CM_TAKE_BACKOUT,                "CM_TAKE_BACKOUT"               ,
  149.     CM_DEALLOCATED_ABEND_BO,        "CM_DEALLOCATED_ABEND_BO"       ,
  150.     CM_DEALLOCATED_ABEND_SVC_BO,    "CM_DEALLOCATED_ABEND_SVC_BO"   ,
  151.     CM_DEALLOCATED_ABEND_TIMER_BO,  "CM_DEALLOCATED_ABEND_TIMER_BO" ,
  152.     CM_RESOURCE_FAIL_NO_RETRY_BO,   "CM_RESOURCE_FAIL_NO_RETRY_BO"  ,
  153.     CM_RESOURCE_FAILURE_RETRY_BO,   "CM_RESOURCE_FAILURE_RETRY_BO"  ,
  154.     CM_DEALLOCATED_NORMAL_BO,       "CM_DEALLOCATED_NORMAL_BO"      ,
  155. #endif
  156.     MAXINT,                         "* Invalid Return Code value"
  157. };
  158.  
  159. CPICERR_MESSAGE cpicerr_rc_classes[] = {
  160.     BACKOUT_RECEIVED, "BACKOUT_RECEIVED"          ,
  161.     CONTINUE,         "CONTINUE"                  ,
  162.     ERROR_RECEIVED,   "ERROR_RECEIVED"            ,
  163.     RETRY_CONV,       "RETRY_CONVERSATION"        ,
  164. #ifndef OS400
  165.     RETRY_CONV_BO,    "RETRY_CONVERSATION_BACKOUT",
  166. #endif
  167.     RETRY_VERB,       "RETRY_LAST_VERB"           ,
  168.     UNRECOVERABLE,    "UNRECOVERABLE"             ,
  169. #ifndef OS400
  170.     UNRECOVERABLE_BO, "UNRECOVERABLE_BACKOUT"     ,
  171. #endif
  172.     MAXINT,           "* Invalid Return Code Class"
  173. };
  174.  
  175. #ifndef OS400
  176. CPICERR_MESSAGE cpicerr_states_conv[] = {
  177.     0,                              "Null"                  ,
  178.     1,                              "Reset"                 ,
  179.     CM_INITIALIZE_STATE,            "Initialize"            ,
  180.     CM_SEND_STATE,                  "Send"                  ,
  181.     CM_RECEIVE_STATE,               "Receive"               ,
  182.     CM_SEND_PENDING_STATE,          "Send pending"          ,
  183.     CM_CONFIRM_STATE,               "Confirm"               ,
  184.     CM_CONFIRM_SEND_STATE,          "Confirm send"          ,
  185.     CM_CONFIRM_DEALLOCATE_STATE,    "Confirm deallocate"    ,
  186.     CM_DEFER_RECEIVE_STATE,         "Defer receive"         ,
  187.     CM_DEFER_DEALLOCATE_STATE,      "Defer deallocate"      ,
  188.     CM_SYNC_POINT_STATE,            "Syncpoint"             ,
  189.     CM_SYNC_POINT_SEND_STATE,       "Syncpoint send"        ,
  190.     CM_SYNC_POINT_DEALLOCATE_STATE, "Syncpoint deallocate"  ,
  191.     MAXINT,                         "Bad Conversation State"
  192. };
  193. #endif
  194.  
  195. CPICERR_MESSAGE cpicerr_sync_levels[] = {
  196.     CM_NONE,       "None",
  197.     CM_CONFIRM,    "Confirm",
  198. #ifndef OS400
  199.     CM_SYNC_POINT, "Sync Point",
  200. #endif
  201.     MAXINT,        "* Invalid Sync Level value"
  202. };
  203.  
  204. CPICERR_MESSAGE cpicerr_conv_types[] = {
  205.     CM_BASIC_CONVERSATION , "Basic",
  206.     CM_MAPPED_CONVERSATION, "Mapped",
  207.     MAXINT,                 "* Invalid Conversation Type value"
  208. };
  209.  
  210.  
  211. CPICERR_MESSAGE_LIST message_list[] = {
  212.     CPIC_SYNC_LEVELS,  cpicerr_sync_levels,
  213.     CPIC_CONV_TYPES,   cpicerr_conv_types,
  214. #ifndef OS400
  215.     CPIC_STATES_CONV,  cpicerr_states_conv,
  216. #endif
  217.     CPIC_RC_CLASSES,   cpicerr_rc_classes,
  218.     CPIC_RETURN_CODES, cpicerr_return_codes,
  219.     CPIC_VERBS_SHORT,  cpicerr_verbs_short,
  220.     CPIC_VERBS_LONG,   cpicerr_verbs_long,
  221.     MAXINT,            NULL
  222. };
  223.  
  224. CPIC_VERB_INDEX call_state_map[NUM_CPIC_CALLS] = {
  225.     MSG_CMACCP,
  226.     MSG_CMALLC,
  227.     MSG_CMCFM ,
  228.     MSG_CMCFMD,
  229.     MSG_CMDEAL,
  230.     MSG_CMDEAL,
  231.     MSG_CMDEAL,
  232.     MSG_CMDEAL,
  233.     MSG_CMECS ,
  234.     MSG_CMECT ,
  235.     MSG_CMEMN ,
  236.     MSG_CMEPLN,
  237.     MSG_CMESL ,
  238.     MSG_CMFLUS,
  239.     MSG_CMINIT,
  240.     MSG_CMPTR ,
  241.     MSG_CMPTR ,
  242.     MSG_CMPTR ,
  243.     MSG_CMRCV ,
  244.     MSG_CMRCV ,
  245.     MSG_CMRTS ,
  246.     MSG_CMSCT ,
  247.     MSG_CMSDT ,
  248.     MSG_CMSED ,
  249.     MSG_CMSEND,
  250.     MSG_CMSERR,
  251.     MSG_CMSF  ,
  252.     MSG_CMSLD ,
  253.     MSG_CMSMN ,
  254.     MSG_CMSPLN,
  255.     MSG_CMSPTR,
  256.     MSG_CMSRC ,
  257.     MSG_CMSRT ,
  258.     MSG_CMSSL ,
  259.     MSG_CMSST ,
  260.     MSG_CMSTPN,
  261.     MSG_CMTRTS
  262. };
  263.  
  264.  
  265. char *cpicerr_get_message(CPICERR_MESSAGE_TYPE message_type, CM_INT32 index)
  266. {
  267.     /*=========================================================================
  268.      * Get the next string from the appropriate array.
  269.      *=======================================================================*/
  270.  
  271.     unsigned int count;                     /* counter through the array     */
  272.  
  273.     CPICERR_MESSAGE *messages;
  274.  
  275.     for (count = 0; message_list[count].type < MAXINT ; count++ ) {
  276.         if (message_list[count].type == message_type) break;
  277.     }
  278.  
  279.     if (NULL == (messages = message_list[count].list)) {
  280.         return "Message list not found.";
  281.     }
  282.  
  283.     for (count = 0; messages[count].index < MAXINT; count++) {
  284.        if (messages[count].index == index) break;
  285.     }
  286.  
  287.     return messages[count].message;
  288. }
  289.