61 #include "SystemInterpreter.hpp"
62 #include "SysFileSystem.hpp"
90 size_t argcountAdjusted = argcount;
93 while (argcountAdjusted >= 1 && arguments[argcountAdjusted - 1] ==
OREF_NULL)
99 if (argcountAdjusted <
min)
104 else if (argcountAdjusted > max)
111 for (
size_t i =
min; i >= 1; i--)
131 if (argcount >= position) argument = arguments[position - 1];
141 arguments[position - 1] = newStr;
158 if (argcount >= position) argument = arguments[position - 1];
170 arguments[position - 1] = newStr;
187 if (argcount >= position) argument = arguments[position - 1];
202 arguments[position - 1] = newInt;
219 if (argcount >= position) argument = arguments[position - 1];
236 arguments[position - 1] = newInt;
255 if (argcount >= position) argument = arguments[position - 1];
267 arguments[position - 1] = newArgument;
286 if (argcount >= position) argument = arguments[position - 1];
300 arguments[position - 1] = newArgument;
320 #define CENTER_string 1
321 #define CENTER_length 2
333 return string->center(length, pad);
338 #define CENTRE_string 1
339 #define CENTRE_length 2
351 return string->center(length, pad);
356 #define DELSTR_string 1
358 #define DELSTR_length 3
368 return string->delstr(n, length);
371 #define DELWORD_MIN 2
372 #define DELWORD_MAX 3
373 #define DELWORD_string 1
375 #define DELWORD_length 3
385 return string->delWord(n, length);
391 #define INSERT_target 2
393 #define INSERT_length 4
409 return target->
insert(newString, n, length, pad);
414 #define LEFT_string 1
415 #define LEFT_length 2
427 return string->left(length, pad);
430 #define OVERLAY_MIN 2
431 #define OVERLAY_MAX 5
432 #define OVERLAY_new 1
433 #define OVERLAY_target 2
435 #define OVERLAY_length 4
436 #define OVERLAY_pad 5
451 return target->
overlay(newString, n, length, pad);
457 #define POS_haystack 2
471 return haystack->
posRexx(needle, start, range);
474 #define LASTPOS_MIN 2
475 #define LASTPOS_MAX 4
476 #define LASTPOS_needle 1
477 #define LASTPOS_haystack 2
478 #define LASTPOS_start 3
479 #define LASTPOS_range 4
492 return haystack->
lastPosRexx(needle, start, range);
495 #define REVERSE_MIN 1
496 #define REVERSE_MAX 1
497 #define REVERSE_string 1
504 return string->reverse();
509 #define RIGHT_string 1
510 #define RIGHT_length 2
522 return string->right(length, pad);
527 #define STRIP_string 1
528 #define STRIP_option 2
541 return string->strip(option, character);
546 #define SPACE_string 1
559 return string->space(n, pad);
564 #define SUBSTR_string 1
566 #define SUBSTR_length 3
581 return string->substr(n, length, pad);
587 #define LOWER_string 1
589 #define LOWER_length 3
601 return string->lowerRexx(n, length);
607 #define UPPER_string 1
609 #define UPPER_length 3
621 return string->upperRexx(n, length);
625 #define SUBWORD_MIN 2
626 #define SUBWORD_MAX 3
627 #define SUBWORD_string 1
629 #define SUBWORD_length 3
639 return string->subWord(n, length);
644 #define WORD_string 1
653 return string->word(n);
656 #define WORDINDEX_MIN 2
657 #define WORDINDEX_MAX 2
658 #define WORDINDEX_string 1
659 #define WORDINDEX_n 2
667 return string->wordIndex(n);
670 #define WORDLENGTH_MIN 2
671 #define WORDLENGTH_MAX 2
672 #define WORDLENGTH_string 1
673 #define WORDLENGTH_n 2
681 return string->wordLength(n);
686 #define COPIES_string 1
695 return string->copies(n);
698 #define WORDPOS_MIN 2
699 #define WORDPOS_MAX 3
700 #define WORDPOS_phrase 1
701 #define WORDPOS_string 2
702 #define WORDPOS_start 3
714 return string->wordPos(phrase, start);
719 #define WORDS_string 1
726 return string->words();
731 #define ABBREV_information 1
732 #define ABBREV_info 2
733 #define ABBREV_length 3
744 return information->
abbrev(info, length);
749 #define BITAND_string1 1
750 #define BITAND_string2 2
762 return string1->
bitAnd(string2, pad);
767 #define BITOR_string1 1
768 #define BITOR_string2 2
780 return string1->
bitOr(string2, pad);
785 #define BITXOR_string1 1
786 #define BITXOR_string2 2
798 return string1->
bitXor(string2, pad);
810 return string->b2x();
822 return string->x2b();
834 return string->c2x();
846 return string->x2c();
860 return string->c2d(n);
865 #define TRUNC_number 1
874 return number->
trunc(n);
888 return string->x2d(n);
902 return string->d2x(n);
916 return string->d2c(n);
919 #define COMPARE_MIN 2
920 #define COMPARE_MAX 3
921 #define COMPARE_string1 1
922 #define COMPARE_string2 2
923 #define COMPARE_pad 3
935 return string1->
compare(string2, pad);
940 #define LENGTH_string 1
950 #define TRANSLATE_MIN 1
951 #define TRANSLATE_MAX 6
952 #define TRANSLATE_string 1
953 #define TRANSLATE_tableo 2
954 #define TRANSLATE_tablei 3
955 #define TRANSLATE_pad 4
956 #define TRANSLATE_start 5
957 #define TRANSLATE_range 6
974 return string->translate(tableo, tablei, pad, start, range);
979 #define VERIFY_string 1
980 #define VERIFY_reference 2
981 #define VERIFY_option 3
982 #define VERIFY_start 4
983 #define VERIFY_range 5
999 return string->verify(reference, option, start, range);
1002 #define DATATYPE_MIN 1
1003 #define DATATYPE_MAX 2
1004 #define DATATYPE_string 1
1005 #define DATATYPE_type 2
1014 return string->dataType(
type);
1017 #define ADDRESS_MIN 0
1018 #define ADDRESS_MAX 0
1023 return context->getAddress();
1026 #define DIGITS_MIN 0
1027 #define DIGITS_MAX 0
1054 #define USERID_MIN 0
1055 #define USERID_MAX 0
1063 #define ERRORTEXT_MIN 1
1064 #define ERRORTEXT_MAX 1
1065 #define ERRORTEXT_n 1
1073 if (error_number < 0 || error_number > 99)
1082 result = OREF_NULLSTRING;
1091 #define ARG_option 2
1100 RexxObject **arglist = context->getMethodArgumentList();
1101 size_t size = context->getMethodArgumentCount();
1119 if (size < position)
1121 return OREF_NULLSTRING;
1128 return OREF_NULLSTRING;
1149 else if (position > size)
1156 return new (size - position + 1, &arglist[position - 1])
RexxArray;
1162 if (position > size)
1167 else if (arglist[position - 1] ==
OREF_NULL)
1179 if (position > size)
1184 else if (arglist[position - 1] ==
OREF_NULL)
1196 if (position > size)
1198 return OREF_NULLSTRING;
1205 return OREF_NULLSTRING;
1217 return OREF_NULLSTRING;
1223 #define DATE_option 1
1224 #define DATE_indate 2
1225 #define DATE_option2 3
1264 style = toupper(option->
getCharC(0));
1285 style2 = toupper(option2->
getCharC(0));
1289 const char *outputSeparator = NULL;
1295 if (strchr(
"BDMWL", style) != NULL)
1312 const char *separator = NULL;
1317 if (strchr(
"BDMWL", style2) != NULL)
1428 timestamp = current;
1504 #define TIME_option 1
1505 #define TIME_intime 2
1506 #define TIME_option2 3
1532 style = toupper(option->
getCharC(0));
1551 style2 = toupper(option2->
getCharC(0));
1559 if (style ==
'R' || style ==
'E')
1631 timestamp = current;
1656 int64_t startTime = context->getElapsed();
1662 context->resetElapsed();
1664 else if (threshold == 0)
1676 context->resetElapsed();
1726 #define RANDOM_MIN 0
1727 #define RANDOM_MAX 3
1728 #define RANDOM_minimum 1
1729 #define RANDOM_maximum 2
1730 #define RANDOM_seed 3
1755 return context->random(minimum, maximum, seed);
1758 #define XRANGE_MIN 0
1759 #define XRANGE_MAX 2
1760 #define XRANGE_start 1
1761 #define XRANGE_end 2
1792 size_t length = ((endchar < startchar) ? (256 - startchar) + endchar : (endchar - startchar)) + 1;
1794 for (
size_t i = 0; i < length; i++)
1801 #define SYMBOL_MIN 1
1802 #define SYMBOL_MAX 1
1803 #define SYMBOL_name 1
1825 if (!variable->
exists(context))
1866 #define VALUE_name 1
1867 #define VALUE_newValue 2
1868 #define VALUE_selector 3
1880 int variableType = variable->
isSymbol();
1898 retriever->
assign(context, stack, newvalue);
1909 variable = variable->
upper();
1911 result = ((
RexxString *)OREF_PERIOD)->concat(variable);
1929 if (!context->getActivity()->callValueExit(context, selector, variable, newvalue, result))
1953 else if (
isOfClass(NumberString, argument))
1977 else if (
isOfClass(NumberString, argument))
1987 #define FORMAT_MIN 1
1988 #define FORMAT_MAX 5
1989 #define FORMAT_number 1
1990 #define FORMAT_before 2
1991 #define FORMAT_after 3
1992 #define FORMAT_expp 4
1993 #define FORMAT_expt 5
2009 return number->
format(before, after, expp, expt);
2013 #define ORXMAX_MIN 1
2014 #define ORXMAX_MAX argcount
2015 #define ORXMAX_target 1
2026 return((
RexxNumberString *)argument)->Max(arguments + 1, argcount - 1, named_argcount);
2032 return target->
Max(arguments + 1, argcount - 1, named_argcount);
2036 #define ORXMIN_MIN 1
2037 #define ORXMIN_MAX argcount
2038 #define ORXMIN_target 1
2049 return((
RexxNumberString *)argument)->Min(arguments + 1, argcount - 1, named_argcount);
2055 return target->
Min(arguments + 1, argcount - 1, named_argcount);
2058 #define SOURCELINE_MIN 0
2059 #define SOURCELINE_MAX 1
2060 #define SOURCELINE_n 1
2067 RexxSource *source = context->getEffectiveSourceObject();
2075 if (line_number > size)
2092 #define TRACE_setting 1
2102 result = context->traceSetting();
2105 context->setTrace(setting);
2126 #define LINEIN_MIN 0
2127 #define LINEIN_MAX 3
2128 #define LINEIN_name 1
2129 #define LINEIN_line 2
2130 #define LINEIN_count 3
2145 if (context->getActivity()->callPullExit(context, result))
2148 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2158 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2173 return OREF_NULLSTRING;
2176 #define CHARIN_MIN 0
2177 #define CHARIN_MAX 3
2178 #define CHARIN_name 1
2179 #define CHARIN_start 2
2180 #define CHARIN_count 3
2199 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2207 return stream->
sendMessage(OREF_CHARIN, position);
2210 return stream->
sendMessage(OREF_CHARIN, position, count);
2213 return OREF_NULLSTRING;
2216 #define LINEOUT_MIN 0
2217 #define LINEOUT_MAX 3
2218 #define LINEOUT_name 1
2219 #define LINEOUT_string 2
2220 #define LINEOUT_line 3
2234 if (context->getActivity()->callPushExit(context,
string,
QUEUE_FIFO))
2239 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2241 return stream->
sendMessage(OREF_QUEUENAME,
string);
2255 RexxObject *stream = context->resolveStream(name,
false, &fullName, &added);
2270 return OREF_NULLSTRING;
2273 #define CHAROUT_MIN 0
2274 #define CHAROUT_MAX 3
2275 #define CHAROUT_name 1
2276 #define CHAROUT_string 2
2277 #define CHAROUT_start 3
2296 RexxObject *stream = context->resolveStream(name,
false, NULL, &added);
2307 return stream->
sendMessage(OREF_CHAROUT,
string, position);
2310 return OREF_NULLSTRING;
2315 #define LINES_name 1
2316 #define LINES_option 2
2344 option = OREF_NORMAL;
2350 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2358 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2365 if (toupper(option->
getCharC(0)) ==
'N')
2382 #define CHARS_name 1
2396 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2400 #define STREAM_MIN 1
2402 #define STREAM_MAX 3
2403 #define STREAM_name 1
2404 #define STREAM_operation 2
2405 #define STREAM_command 3
2407 #define STREAM_STATUS 'S'
2408 #define STREAM_DESCRIPTION 'D'
2409 #define STREAM_COMMAND 'C'
2435 action_char = toupper(action->
getCharC(0));
2438 switch (action_char)
2447 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2460 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2487 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2492 context->getStreams()->remove(fullName);
2500 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2502 context->getStreams()->remove(fullName);
2511 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2518 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2519 return stream->
sendMessage(OREF_COMMAND, command);
2532 #define QUEUED_MIN 0
2533 #define QUEUED_MAX 0
2541 if (context->getActivity()->callQueueSizeExit(context, queuesize))
2543 RexxObject *queue = context->getLocalEnvironment(OREF_REXXQUEUE);
2553 #define CONDITION_MIN 0
2554 #define CONDITION_MAX 1
2555 #define CONDITION_option 1
2572 style = toupper(option->
getCharC(0));
2584 RexxObject *result = conditionobj->
at(OREF_ADDITIONAL);
2591 return result->
copy();
2604 return conditionobj->
at(OREF_INSTRUCTION);
2612 RexxObject *result = conditionobj->
at(OREF_DESCRIPTION);
2615 result = OREF_NULLSTRING;
2625 return conditionobj->
at(OREF_CONDITION);
2632 return conditionobj->
copy();
2640 return context->trapState((
RexxString *)conditionobj->
at(OREF_CONDITION));
2649 return OREF_NULLSTRING;
2652 #define CHANGESTR_MIN 3
2653 #define CHANGESTR_MAX 4
2654 #define CHANGESTR_needle 1
2655 #define CHANGESTR_haystack 2
2656 #define CHANGESTR_newneedle 3
2657 #define CHANGESTR_count 4
2671 return haystack->
changeStr(needle, newneedle, count);
2674 #define COUNTSTR_MIN 2
2675 #define COUNTSTR_MAX 2
2676 #define COUNTSTR_needle 1
2677 #define COUNTSTR_haystack 2
2690 #define RXFUNCADD_MIN 2
2691 #define RXFUNCADD_MAX 3
2692 #define RXFUNCADD_name 1
2693 #define RXFUNCADD_module 2
2694 #define RXFUNCADD_proc 3
2716 #define RXFUNCDROP_MIN 1
2717 #define RXFUNCDROP_MAX 1
2718 #define RXFUNCDROP_name 1
2731 #define RXFUNCQUERY_MIN 1
2732 #define RXFUNCQUERY_MAX 1
2733 #define RXFUNCQUERY_name 1
2747 #define QUEUEEXIT_MIN 1
2748 #define QUEUEEXIT_MAX 1
2749 #define QUEUEEXIT_name 1
2761 context->getActivity()->callQueueNameExit(context, name);
2765 name = OREF_NULLSTRING;
2770 #define SETLOCAL_MIN 0
2771 #define SETLOCAL_MAX 0
2780 #define ENDLOCAL_MIN 0
2781 #define ENDLOCAL_MAX 0
2790 #define QUALIFY_MIN 0
2791 #define QUALIFY_MAX 1
2792 #define QUALIFY_name 1
2804 qualified_name[0] =
'\0';
2816 &builtin_function_ABBREV ,
2817 &builtin_function_ABS ,
2818 &builtin_function_ADDRESS ,
2819 &builtin_function_ARG ,
2820 &builtin_function_B2X ,
2821 &builtin_function_BITAND ,
2822 &builtin_function_BITOR ,
2823 &builtin_function_BITXOR ,
2824 &builtin_function_C2D ,
2825 &builtin_function_C2X ,
2826 &builtin_function_CENTER ,
2827 &builtin_function_CENTRE ,
2828 &builtin_function_CHANGESTR ,
2829 &builtin_function_CHARIN ,
2830 &builtin_function_CHAROUT ,
2831 &builtin_function_CHARS ,
2832 &builtin_function_COMPARE ,
2833 &builtin_function_CONDITION ,
2834 &builtin_function_COPIES ,
2835 &builtin_function_COUNTSTR ,
2836 &builtin_function_D2C ,
2837 &builtin_function_D2X ,
2838 &builtin_function_DATATYPE ,
2839 &builtin_function_DATE ,
2840 &builtin_function_DELSTR ,
2841 &builtin_function_DELWORD ,
2842 &builtin_function_DIGITS ,
2843 &builtin_function_ERRORTEXT ,
2844 &builtin_function_FORM ,
2845 &builtin_function_FORMAT ,
2846 &builtin_function_FUZZ ,
2847 &builtin_function_INSERT ,
2848 &builtin_function_LASTPOS ,
2849 &builtin_function_LEFT ,
2850 &builtin_function_LENGTH ,
2851 &builtin_function_LINEIN ,
2852 &builtin_function_LINEOUT ,
2853 &builtin_function_LINES ,
2854 &builtin_function_ORXMAX ,
2855 &builtin_function_ORXMIN ,
2856 &builtin_function_OVERLAY ,
2857 &builtin_function_POS ,
2858 &builtin_function_QUEUED ,
2859 &builtin_function_RANDOM ,
2860 &builtin_function_REVERSE ,
2861 &builtin_function_RIGHT ,
2862 &builtin_function_SIGN ,
2863 &builtin_function_SOURCELINE ,
2864 &builtin_function_SPACE ,
2865 &builtin_function_STREAM ,
2866 &builtin_function_STRIP ,
2867 &builtin_function_SUBSTR ,
2868 &builtin_function_SUBWORD ,
2869 &builtin_function_SYMBOL ,
2870 &builtin_function_TIME ,
2871 &builtin_function_TRACE ,
2872 &builtin_function_TRANSLATE ,
2873 &builtin_function_TRUNC ,
2874 &builtin_function_VALUE ,
2875 &builtin_function_VAR ,
2876 &builtin_function_VERIFY ,
2877 &builtin_function_WORD ,
2878 &builtin_function_WORDINDEX ,
2879 &builtin_function_WORDLENGTH ,
2880 &builtin_function_WORDPOS ,
2881 &builtin_function_WORDS ,
2882 &builtin_function_X2B ,
2883 &builtin_function_X2C ,
2884 &builtin_function_X2D ,
2885 &builtin_function_XRANGE ,
2886 &builtin_function_USERID ,
2887 &builtin_function_LOWER ,
2888 &builtin_function_UPPER ,
2889 &builtin_function_RXFUNCADD ,
2890 &builtin_function_RXFUNCDROP ,
2891 &builtin_function_RXFUNCQUERY ,
2892 &builtin_function_ENDLOCAL ,
2893 &builtin_function_SETLOCAL ,
2894 &builtin_function_QUEUEEXIT ,
2895 &builtin_function_QUALIFY ,
void reportException(wholenumber_t error)
#define STREAM_DESCRIPTION
RexxString * requiredStringArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
void expandArgs(RexxObject **arguments, size_t argcount, size_t min, size_t max, const char *function)
RexxInteger * requiredIntegerArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
bool check_queue(RexxString *name)
void checkPadArgument(const char *pFuncName, RexxObject *position, RexxString *pad)
RexxString * optionalStringArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
RexxObject * optionalBigIntegerArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
RexxInteger * optionalIntegerArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
RexxObject * requiredBigIntegerArg(size_t position, RexxObject **arguments, size_t argcount, const char *function)
#define optional_string(x, n)
#define optional_integer(x, n)
#define required_integer(x, n)
#define optional_big_integer(x, n)
#define required_string(x, n)
#define positive_integer(n, f, p)
#define optional_argument(x, n)
#define arg_omitted(x, n)
RexxInteger * new_integer(wholenumber_t v)
#define Error_Incorrect_call_stream_name
#define Error_Incorrect_call_selector
#define Error_Incorrect_call_list
#define Error_Incorrect_call_pad
#define Error_Incorrect_call_symbol
#define Error_Incorrect_call_noarg
#define Error_Incorrect_call_minarg
#define Error_Incorrect_call_whole
#define Error_Incorrect_call_queue_no_char
#define Error_Incorrect_call_maxarg
#define Error_Incorrect_call_format_invalid
#define Error_Incorrect_call_parm_wrong_sep
#define Message_Translations_January
#define Error_Incorrect_call_sourceline
#define Error_Incorrect_call_range
#define Error_Incorrect_call_format_incomp_sep
#define Error_Incorrect_call_invalid_conversion
RexxString * new_string(const char *s, stringsizeB_t bl, sizeC_t cl=-1)
#define STRING_COMPOUND_NAME
RexxString * raw_string(stringsizeB_t bl, stringsizeC_t cl=-1)
static RexxObject * int64Object(RexxObject *source)
static const bool FORM_SCIENTIFIC
static const size_t ARGUMENT_DIGITS
static bool objectToInt64(RexxObject *o, int64_t &result)
static RexxObject * dropRegisteredRoutine(RexxString *name)
static RexxObject * queryRegisteredRoutine(RexxString *name)
static RexxObject * addRegisteredRoutine(RexxString *name, RexxString *module, RexxString *proc)
void formatCivilTime(char *buffer)
void formatNormalDate(char *buffer, const char *sep)
void formatHours(char *buffer)
void formatBaseTime(char *buffer)
void formatWeekDay(char *buffer)
void setDate(wholenumber_t newYear, wholenumber_t newDay)
void formatMonthName(char *buffer)
void formatOrderedDate(char *buffer, const char *sep)
bool setMinutes(wholenumber_t m)
void formatMinutes(char *buffer)
bool setBaseDate(wholenumber_t basedays)
void formatDays(char *buffer)
bool parseUsaDate(const char *date, const char *sep, wholenumber_t currentYear)
bool parseOrderedDate(const char *date, const char *sep, wholenumber_t currentYear)
void formatStandardDate(char *buffer, const char *sep)
bool parseNormalTime(const char *date)
void formatTimeZone(char *buffer)
bool parseLongTime(const char *date)
void formatNormalTime(char *buffer)
bool parseEuropeanDate(const char *date, const char *sep, wholenumber_t currentYear)
bool parseCivilTime(const char *date)
void formatLongTime(char *buffer)
bool setBaseTime(int64_t basetime)
bool setHours(wholenumber_t h)
void formatSeconds(char *buffer)
bool parseStandardDate(const char *date, const char *sep)
bool parseNormalDate(const char *date, const char *sep)
bool adjustTimeZone(int64_t o)
bool setUnixTime(int64_t basetime)
void formatUnixTime(char *buffer)
void formatEuropeanDate(char *buffer, const char *sep)
void formatUsaDate(char *buffer, const char *sep)
void setTimeZoneOffset(int64_t o)
void formatBaseDate(char *buffer)
int64_t getTimeZoneOffset()
bool setSeconds(wholenumber_t s)
RexxObject * at(RexxString *)
RexxObject * getValue(RexxActivation *)
virtual RexxObject * getValue(RexxActivation *)
void sendMessage(RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
bool requestNumber(wholenumber_t &, size_t)
RexxString * requestString()
virtual bool numberValue(wholenumber_t &result, size_t precision)
static pbuiltin builtinTable[]
bool numberValue(wholenumber_t &result, size_t precision)
RexxObject * trunc(RexxInteger *decimals)
RexxString * changeStr(RexxString *, RexxString *, RexxInteger *)
RexxObject * Min(RexxObject **args, size_t argCount, size_t named_argCount)
RexxString * bitOr(RexxString *, RexxString *)
bool strCaselessCompare(const char *s)
RexxString * bitAnd(RexxString *, RexxString *)
RexxString * overlay(RexxString *, RexxInteger *, RexxInteger *, RexxString *)
RexxObject * lengthRexx()
RexxInteger * abbrev(RexxString *, RexxInteger *)
RexxObject * format(RexxObject *Integers, RexxObject *Decimals, RexxObject *MathExp, RexxObject *ExpTrigger)
const char * getStringData()
RexxObject * Max(RexxObject **args, size_t argCount, size_t named_argCount)
RexxInteger * lastPosRexx(RexxString *, RexxInteger *, RexxInteger *)
RexxInteger * compare(RexxString *, RexxString *)
char putCharB(sizeB_t p, char c)
RexxString * bitXor(RexxString *, RexxString *)
RexxInteger * posRexx(RexxString *, RexxInteger *, RexxInteger *)
bool strCompare(const char *s)
codepoint_t getCharC(sizeC_t p)
RexxInteger * countStrRexx(RexxString *)
RexxInteger * wordPos(RexxString *, RexxInteger *)
RexxString * insert(RexxString *, RexxInteger *, RexxInteger *, RexxString *)
virtual bool exists(RexxActivation *)
virtual void assign(RexxActivation *, RexxExpressionStack *, RexxObject *)
static RexxVariableBase * getVariableRetriever(RexxString *variable)
static void qualifyStreamName(const char *unqualifiedName, char *qualifiedName, size_t bufferSize)
static bool valueFunction(RexxString *name, RexxObject *newValue, RexxString *selector, RexxObject *&result)
static RexxString * getMessageText(wholenumber_t code)
static RexxObject * popEnvironment(RexxActivation *context)
static RexxString * getUserid()
static RexxObject * pushEnvironment(RexxActivation *context)