1 /* BEGIN INCLUDE FILE ... _ssu_sci.incl.pl1 */
  2 /* Created:  31 April 1980 by W. Olin Sibert */
  3 /* Modified: 17 November 1981 by Jay Pattin to add info_prefix */
  4 /* Modified: 10 December 1981 by G. Palter to make arg_count, arg_ptr, return_arg, and arg_list_ptr replaceable */
  5 /* Modified: 10 February 1982 by G. Palter to reorganize and make changes required for installation */
  6 /* Modified: June 1982 by G. Palter for version 2 (new request processor options and replaceable procedures) */
  7 /* Modified: 6 November 1984 by G. Palter for version 3 (get_subsystem_and_request_name is now replaceable) */
  8 
  9 /* format: style4,^delnl */
 10 
 11 
 12 /* Structure used internally by subsystem utilities to contain control information about a single invocation */
 13 
 14 dcl  1 sci aligned based (sci_ptr),
 15        2 version character (8),
 16        2 parent_area_ptr pointer,                           /* -> area holding this data and referenced structures */
 17 
 18        2 global_info,                                       /* global information about this subsystem ... */
 19          3 subsystem_name char (32) unaligned,              /* ... its name (eg: read_mail) */
 20          3 subsystem_version char (32) unaligned,           /* ... its version numer (eg: 4.3j) */
 21          3 info_ptr pointer,                                /* ... -> data maintained by the subsystem */
 22          3 standalone_abort_entry entry () variable,        /* ... for standalone invocations: called by ssu_$abort_* */
 23          3 flags,
 24            4 standalone_invocation bit (1) unaligned,       /* ... ON => ssu_$standalone_invocation was used */
 25            4 in_listener bit (1) unaligned,                 /* ... ON => in subsystem listener loop */
 26            4 executing_request bit (1) unaligned,           /* ... ON => executing a request */
 27            4 debug_mode bit (1) unaligned,                  /* ... ON => debugging the subsystem */
 28            4 pad bit (32) unaligned,
 29 
 30        2 recursion_info,                                    /* describes relationship of this invocation to other active
 31                                                                invocations of the same subsystem ... */
 32          3 invocation_data_idx fixed binary,                /* ... locates the list of active invocations */
 33          3 level fixed binary,                              /* ... # of active invocations when this one created + 1 */
 34          3 previous_sci_ptr pointer,                        /* ... -> description of previous invocation */
 35          3 next_sci_ptr pointer,                            /* ... -> description of next invocation */
 36 
 37        2 request_processor_info,                            /* information related to request line processing ... */
 38          3 request_tables_ptr pointer,                      /* ... -> list of request tables in use */
 39          3 rp_options_ptr pointer,                          /* ... -> options controlling the processor */
 40          3 abort_line_label label variable,
 41          3 request_data_ptr pointer,                        /* ... -> request_data structure for current request */
 42 
 43        2 prompt_and_ready_info,                             /* information related to prompts and ready messages ... */
 44          3 prompt character (64) varying,                   /* the prompt (if any): an ioa_ control string */
 45          3 prompt_mode,                                     /* controls prompting ... */
 46            4 dont_prompt bit (1) unaligned,                 /* ... ON => never prompt */
 47            4 prompt_after_null_lines bit (1) unaligned,     /* ... ON => prompt after a blank line if prompts enabled */
 48            4 dont_prompt_if_typeahead bit (1) unaligned,    /* ... ON => suppress prompts if request line available */
 49            4 pad bit (33) unaligned,
 50          3 ready_enabled bit (1) aligned,                   /* ... ON => ready procedure should be invoked */
 51 
 52        2 listener_info,                                     /* information used by the listener ... */
 53          3 abort_subsystem_label label variable,
 54          3 temp_seg_ptr pointer,                            /* ... -> temporary segment used for long request lines */
 55 
 56        2 temp_info_ptr pointer,                             /* pointer to data used by ssu_temp_mgr_ */
 57 
 58        2 info_info,                                         /* information related to self-documentation ... */
 59          3 info_dirs_ptr pointer,                           /* ... -> list of info directories */
 60          3 info_prefix character (32),                      /* ... prefix used to form info segment names */
 61 
 62        2 ec_info,                                           /* data for subsystem exec_com processing ... */
 63          3 ec_suffix char (32) unaligned,                   /* ... suffix of exec_com segments */
 64          3 ec_search_list char (32) unaligned,              /* ... search list used to find exec_coms */
 65          3 subsystem_dir_ptr pointer,                       /* ... defines referencing_dir rule for above search list */
 66 
 67        2 entries,                                           /* all replaceable entries ... */
 68          (
 69          3 abort_line,                                      /* ... invoked by ssu_$abort_line */
 70          3 abort_subsystem,                                 /* ... invoked by ssu_$abort_subsystem */
 71          3 print_message,                                   /* ... invoked by ssu_$print_message */
 72          3 program_interrupt,                               /* ... cannot be called externally */
 73          3 pre_request_line,                                /* ... cannot be called externally */
 74          3 post_request_line,                               /* ... cannot be called externally */
 75          3 ready,                                           /* ... invoked by ssu_$ready_proc */
 76          3 cpescape,                                        /* ... cannot be called externally */
 77          3 unknown_request,                                 /* ... invoked by ssu_$unknown_request */
 78          3 listen,                                          /* ... invoked by ssu_$listen */
 79          3 execute_line,                                    /* ... invoked by ssu_$execute_line */
 80          3 evaluate_active_string,                          /* ... invoked by ssu_$evaluate_active_string */
 81          3 invoke_request,                                  /* ... invoked by ssu_$invoke_request */
 82          3 locate_request,                                  /* ... invoked by ssu_$locate_request */
 83          3 arg_count,                                       /* ... invoked by ssu_$arg_count */
 84          3 arg_ptr,                                         /* ... invoked by ssu_$arg_ptr */
 85          3 return_arg,                                      /* ... invoked by ssu_$return_arg */
 86          3 arg_list_ptr,                                    /* ... invoked by ssu_$arg_list_ptr */
 87          3 get_default_rp_options,                          /* ... invoked by ssu_$get_default_rp_options */
 88          3 get_rp_options,                                  /* ... invoked by ssu_$get_request_processor_options */
 89          3 set_rp_options,                                  /* ... invoked by ssu_$set_request_processor_options */
 90          3 reset_rp_options,                                /* ... invoked by ssu_$reset_request_processor_options */
 91          3 get_subsys_and_request_name                      /* ... invoked by ssu_$get_subsystem_and_request_name */
 92          ) entry () variable options (variable);
 93 
 94 dcl  sci_ptr pointer;
 95 
 96 dcl  sci_parent_area area based (sci.parent_area_ptr);
 97 
 98 dcl  SCI_VERSION_3 character (8) static options (constant) init ("sci_0003");
 99 
100 /* END INCLUDE FILE ... _ssu_sci.incl.pl1 */