61 #include "SystemInterpreter.hpp"
62 #include "SysFileSystem.hpp"
91 size_t argcountAdjusted = argcount;
94 while (argcountAdjusted >= 1 && arguments[argcountAdjusted - 1] ==
OREF_NULL)
100 if (argcountAdjusted <
min)
105 else if (argcountAdjusted > max)
112 for (
size_t i =
min; i >= 1; i--)
132 if (argcount >= position) argument = arguments[position - 1];
142 arguments[position - 1] = newStr;
159 if (argcount >= position) argument = arguments[position - 1];
171 arguments[position - 1] = newStr;
188 if (argcount >= position) argument = arguments[position - 1];
196 arguments[position - 1] = text;
213 if (argcount >= position) argument = arguments[position - 1];
228 arguments[position - 1] = newInt;
245 if (argcount >= position) argument = arguments[position - 1];
262 arguments[position - 1] = newInt;
281 if (argcount >= position) argument = arguments[position - 1];
293 arguments[position - 1] = newArgument;
312 if (argcount >= position) argument = arguments[position - 1];
326 arguments[position - 1] = newArgument;
344 #define TEXT_BIF_TARGET1(x,n) \
345 if (hasRexxTextArguments(arguments, argcount, named_argcount)) \
347 RexxText *text = required_text(x, n); \
348 ProtectedObject p_text(text); \
349 return text->sendMessage(OREF_##x, &arguments[1], argcount-1, named_argcount); \
352 #define TEXT_BIF_TARGET2(x,n1,n2) \
353 if (hasRexxTextArguments(arguments, argcount, named_argcount)) \
355 RexxText *text = required_text(x, n1); \
356 ProtectedObject p_text(text); \
358 return text->sendMessage(OREF_##x, &arguments[x##_##n1 - 1], argcount-1, named_argcount); \
364 #define CENTER_string 1
365 #define CENTER_length 2
380 return string->center(length, pad);
385 #define CENTRE_string 1
386 #define CENTRE_length 2
401 return string->center(length, pad);
406 #define DELSTR_string 1
408 #define DELSTR_length 3
421 return string->delstr(n, length);
424 #define DELWORD_MIN 2
425 #define DELWORD_MAX 3
426 #define DELWORD_string 1
428 #define DELWORD_length 3
441 return string->delWord(n, length);
447 #define INSERT_target 2
449 #define INSERT_length 4
468 return target->
insert(newString, n, length, pad);
473 #define LEFT_string 1
474 #define LEFT_length 2
489 return string->left(length, pad);
492 #define OVERLAY_MIN 2
493 #define OVERLAY_MAX 5
494 #define OVERLAY_new 1
495 #define OVERLAY_target 2
497 #define OVERLAY_length 4
498 #define OVERLAY_pad 5
516 return target->
overlay(newString, n, length, pad);
522 #define POS_haystack 2
539 return haystack->
posRexx(needle, start, range);
542 #define LASTPOS_MIN 2
543 #define LASTPOS_MAX 4
544 #define LASTPOS_needle 1
545 #define LASTPOS_haystack 2
546 #define LASTPOS_start 3
547 #define LASTPOS_range 4
563 return haystack->
lastPosRexx(needle, start, range);
566 #define REVERSE_MIN 1
567 #define REVERSE_MAX 1
568 #define REVERSE_string 1
578 return string->reverse();
583 #define RIGHT_string 1
584 #define RIGHT_length 2
599 return string->right(length, pad);
604 #define STRIP_string 1
605 #define STRIP_option 2
621 return string->strip(option, character);
626 #define SPACE_string 1
642 return string->space(n, pad);
647 #define SUBSTR_string 1
649 #define SUBSTR_length 3
667 return string->substr(n, length, pad);
673 #define LOWER_string 1
675 #define LOWER_length 3
690 return string->lowerRexx(n, length);
696 #define UPPER_string 1
698 #define UPPER_length 3
713 return string->upperRexx(n, length);
717 #define SUBWORD_MIN 2
718 #define SUBWORD_MAX 3
719 #define SUBWORD_string 1
721 #define SUBWORD_length 3
734 return string->subWord(n, length);
739 #define WORD_string 1
751 return string->word(n);
754 #define WORDINDEX_MIN 2
755 #define WORDINDEX_MAX 2
756 #define WORDINDEX_string 1
757 #define WORDINDEX_n 2
768 return string->wordIndex(n);
771 #define WORDLENGTH_MIN 2
772 #define WORDLENGTH_MAX 2
773 #define WORDLENGTH_string 1
774 #define WORDLENGTH_n 2
785 return string->wordLength(n);
790 #define COPIES_string 1
802 return string->copies(n);
805 #define WORDPOS_MIN 2
806 #define WORDPOS_MAX 3
807 #define WORDPOS_phrase 1
808 #define WORDPOS_string 2
809 #define WORDPOS_start 3
824 return string->wordPos(phrase, start);
829 #define WORDS_string 1
839 return string->words();
844 #define ABBREV_information 1
845 #define ABBREV_info 2
846 #define ABBREV_length 3
860 return information->
abbrev(info, length);
865 #define BITAND_string1 1
866 #define BITAND_string2 2
878 return string1->
bitAnd(string2, pad);
883 #define BITOR_string1 1
884 #define BITOR_string2 2
896 return string1->
bitOr(string2, pad);
901 #define BITXOR_string1 1
902 #define BITXOR_string2 2
914 return string1->
bitXor(string2, pad);
926 return string->b2x();
938 return string->x2b();
953 return string->c2x();
968 return string->x2c();
982 return string->c2d(n);
987 #define TRUNC_number 1
996 return number->
trunc(n);
1001 #define X2D_string 1
1010 return string->x2d(n);
1015 #define D2X_string 1
1024 return string->d2x(n);
1029 #define D2C_string 1
1041 return string->d2c(n);
1044 #define COMPARE_MIN 2
1045 #define COMPARE_MAX 3
1046 #define COMPARE_string1 1
1047 #define COMPARE_string2 2
1048 #define COMPARE_pad 3
1063 return string1->
compare(string2, pad);
1066 #define LENGTH_MIN 1
1067 #define LENGTH_MAX 1
1068 #define LENGTH_string 1
1081 #define TRANSLATE_MIN 1
1082 #define TRANSLATE_MAX 6
1083 #define TRANSLATE_string 1
1084 #define TRANSLATE_tableo 2
1085 #define TRANSLATE_tablei 3
1086 #define TRANSLATE_pad 4
1087 #define TRANSLATE_start 5
1088 #define TRANSLATE_range 6
1108 return string->translate(tableo, tablei, pad, start, range);
1111 #define VERIFY_MIN 2
1112 #define VERIFY_MAX 5
1113 #define VERIFY_string 1
1114 #define VERIFY_reference 2
1115 #define VERIFY_option 3
1116 #define VERIFY_start 4
1117 #define VERIFY_range 5
1136 return string->verify(reference, option, start, range);
1139 #define DATATYPE_MIN 1
1140 #define DATATYPE_MAX 2
1141 #define DATATYPE_string 1
1142 #define DATATYPE_type 2
1151 return string->dataType(
type);
1154 #define ADDRESS_MIN 0
1155 #define ADDRESS_MAX 0
1160 return context->getAddress();
1163 #define DIGITS_MIN 0
1164 #define DIGITS_MAX 0
1191 #define USERID_MIN 0
1192 #define USERID_MAX 0
1200 #define ERRORTEXT_MIN 1
1201 #define ERRORTEXT_MAX 1
1202 #define ERRORTEXT_n 1
1210 if (error_number < 0 || error_number > 99)
1219 result = OREF_NULLSTRING;
1228 #define ARG_option 2
1237 RexxObject **arglist = context->getMethodArgumentList();
1238 size_t size = context->getMethodArgumentCount();
1256 if (size < position)
1258 return OREF_NULLSTRING;
1265 return OREF_NULLSTRING;
1286 else if (position > size)
1293 return new (size - position + 1, &arglist[position - 1])
RexxArray;
1299 if (position > size)
1304 else if (arglist[position - 1] ==
OREF_NULL)
1316 if (position > size)
1321 else if (arglist[position - 1] ==
OREF_NULL)
1333 if (position > size)
1335 return OREF_NULLSTRING;
1342 return OREF_NULLSTRING;
1354 return OREF_NULLSTRING;
1360 #define DATE_option 1
1361 #define DATE_indate 2
1362 #define DATE_option2 3
1401 style = toupper((
int)option->
getChar(0));
1422 style2 = toupper((
int)option2->
getChar(0));
1426 const char *outputSeparator = NULL;
1432 if (strchr(
"BDMWL", style) != NULL)
1449 const char *separator = NULL;
1454 if (strchr(
"BDMWL", style2) != NULL)
1565 timestamp = current;
1641 #define TIME_option 1
1642 #define TIME_intime 2
1643 #define TIME_option2 3
1669 style = toupper((
int)option->
getChar(0));
1688 style2 = toupper((
int)option2->
getChar(0));
1696 if (style ==
'R' || style ==
'E')
1768 timestamp = current;
1793 int64_t startTime = context->getElapsed();
1799 context->resetElapsed();
1801 else if (threshold == 0)
1813 context->resetElapsed();
1863 #define RANDOM_MIN 0
1864 #define RANDOM_MAX 3
1865 #define RANDOM_minimum 1
1866 #define RANDOM_maximum 2
1867 #define RANDOM_seed 3
1892 return context->random(minimum, maximum, seed);
1895 #define XRANGE_MIN 0
1896 #define XRANGE_MAX 2
1897 #define XRANGE_start 1
1898 #define XRANGE_end 2
1917 startchar = start->
getChar(0);
1929 size_t length = ((endchar < startchar) ? (256 - startchar) + endchar : (endchar - startchar)) + 1;
1931 for (
size_t i = 0; i < length; i++)
1933 result->
putChar(i, (
char)startchar++);
1938 #define SYMBOL_MIN 1
1939 #define SYMBOL_MAX 1
1940 #define SYMBOL_name 1
1962 if (!variable->
exists(context))
2003 #define VALUE_name 1
2004 #define VALUE_newValue 2
2005 #define VALUE_selector 3
2017 int variableType = variable->
isSymbol();
2035 retriever->
assign(context, stack, newvalue);
2046 variable = variable->
upper();
2048 result = ((
RexxString *)OREF_PERIOD)->concat(variable);
2066 if (!context->getActivity()->callValueExit(context, selector, variable, newvalue, result))
2090 else if (
isOfClass(NumberString, argument))
2114 else if (
isOfClass(NumberString, argument))
2124 #define FORMAT_MIN 1
2125 #define FORMAT_MAX 5
2126 #define FORMAT_number 1
2127 #define FORMAT_before 2
2128 #define FORMAT_after 3
2129 #define FORMAT_expp 4
2130 #define FORMAT_expt 5
2146 return number->
format(before, after, expp, expt);
2150 #define ORXMAX_MIN 1
2151 #define ORXMAX_MAX argcount
2152 #define ORXMAX_target 1
2163 return((
RexxNumberString *)argument)->Max(arguments + 1, argcount - 1, named_argcount);
2169 return target->
Max(arguments + 1, argcount - 1, named_argcount);
2173 #define ORXMIN_MIN 1
2174 #define ORXMIN_MAX argcount
2175 #define ORXMIN_target 1
2186 return((
RexxNumberString *)argument)->Min(arguments + 1, argcount - 1, named_argcount);
2192 return target->
Min(arguments + 1, argcount - 1, named_argcount);
2195 #define SOURCELINE_MIN 0
2196 #define SOURCELINE_MAX 1
2197 #define SOURCELINE_n 1
2204 RexxSource *source = context->getEffectiveSourceObject();
2212 if (line_number > size)
2229 #define TRACE_setting 1
2239 result = context->traceSetting();
2242 context->setTrace(setting);
2263 #define LINEIN_MIN 0
2264 #define LINEIN_MAX 3
2265 #define LINEIN_name 1
2266 #define LINEIN_line 2
2267 #define LINEIN_count 3
2282 if (context->getActivity()->callPullExit(context, result))
2285 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2295 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2310 return OREF_NULLSTRING;
2313 #define CHARIN_MIN 0
2314 #define CHARIN_MAX 3
2315 #define CHARIN_name 1
2316 #define CHARIN_start 2
2317 #define CHARIN_count 3
2336 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2344 return stream->
sendMessage(OREF_CHARIN, position);
2347 return stream->
sendMessage(OREF_CHARIN, position, count);
2350 return OREF_NULLSTRING;
2353 #define LINEOUT_MIN 0
2354 #define LINEOUT_MAX 3
2355 #define LINEOUT_name 1
2356 #define LINEOUT_string 2
2357 #define LINEOUT_line 3
2371 if (context->getActivity()->callPushExit(context,
string,
QUEUE_FIFO))
2376 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2378 return stream->
sendMessage(OREF_QUEUENAME,
string);
2392 RexxObject *stream = context->resolveStream(name,
false, &fullName, &added);
2407 return OREF_NULLSTRING;
2410 #define CHAROUT_MIN 0
2411 #define CHAROUT_MAX 3
2412 #define CHAROUT_name 1
2413 #define CHAROUT_string 2
2414 #define CHAROUT_start 3
2433 RexxObject *stream = context->resolveStream(name,
false, NULL, &added);
2444 return stream->
sendMessage(OREF_CHAROUT,
string, position);
2447 return OREF_NULLSTRING;
2452 #define LINES_name 1
2453 #define LINES_option 2
2481 option = OREF_NORMAL;
2487 RexxObject *stream = context->getLocalEnvironment(OREF_REXXQUEUE);
2495 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2502 if (toupper((
int)option->
getChar(0)) ==
'N')
2519 #define CHARS_name 1
2533 RexxObject *stream = context->resolveStream(name,
true, NULL, &added);
2537 #define STREAM_MIN 1
2539 #define STREAM_MAX 3
2540 #define STREAM_name 1
2541 #define STREAM_operation 2
2542 #define STREAM_command 3
2544 #define STREAM_STATUS 'S'
2545 #define STREAM_DESCRIPTION 'D'
2546 #define STREAM_COMMAND 'C'
2572 action_char = toupper((
int)action->
getChar(0));
2575 switch (action_char)
2584 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2597 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2624 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2629 context->getStreams()->remove(fullName);
2637 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2639 context->getStreams()->remove(fullName);
2648 RexxObject *stream = context->resolveStream(name,
true, &fullName, &added);
2655 RexxObject *stream = context->resolveStream(name,
true, NULL, NULL);
2656 return stream->
sendMessage(OREF_COMMAND, command);
2669 #define QUEUED_MIN 0
2670 #define QUEUED_MAX 0
2678 if (context->getActivity()->callQueueSizeExit(context, queuesize))
2680 RexxObject *queue = context->getLocalEnvironment(OREF_REXXQUEUE);
2690 #define CONDITION_MIN 0
2691 #define CONDITION_MAX 1
2692 #define CONDITION_option 1
2709 style = toupper((
int)option->
getChar(0));
2721 RexxObject *result = conditionobj->
at(OREF_ADDITIONAL);
2728 return result->
copy();
2741 return conditionobj->
at(OREF_INSTRUCTION);
2749 RexxObject *result = conditionobj->
at(OREF_DESCRIPTION);
2752 result = OREF_NULLSTRING;
2762 return conditionobj->
at(OREF_CONDITION);
2769 return conditionobj->
copy();
2777 return context->trapState((
RexxString *)conditionobj->
at(OREF_CONDITION));
2786 return OREF_NULLSTRING;
2789 #define CHANGESTR_MIN 3
2790 #define CHANGESTR_MAX 4
2791 #define CHANGESTR_needle 1
2792 #define CHANGESTR_haystack 2
2793 #define CHANGESTR_newneedle 3
2794 #define CHANGESTR_count 4
2811 return haystack->
changeStr(needle, newneedle, count);
2814 #define COUNTSTR_MIN 2
2815 #define COUNTSTR_MAX 2
2816 #define COUNTSTR_needle 1
2817 #define COUNTSTR_haystack 2
2833 #define RXFUNCADD_MIN 2
2834 #define RXFUNCADD_MAX 3
2835 #define RXFUNCADD_name 1
2836 #define RXFUNCADD_module 2
2837 #define RXFUNCADD_proc 3
2859 #define RXFUNCDROP_MIN 1
2860 #define RXFUNCDROP_MAX 1
2861 #define RXFUNCDROP_name 1
2874 #define RXFUNCQUERY_MIN 1
2875 #define RXFUNCQUERY_MAX 1
2876 #define RXFUNCQUERY_name 1
2890 #define QUEUEEXIT_MIN 1
2891 #define QUEUEEXIT_MAX 1
2892 #define QUEUEEXIT_name 1
2904 context->getActivity()->callQueueNameExit(context, name);
2908 name = OREF_NULLSTRING;
2913 #define SETLOCAL_MIN 0
2914 #define SETLOCAL_MAX 0
2923 #define ENDLOCAL_MIN 0
2924 #define ENDLOCAL_MAX 0
2933 #define QUALIFY_MIN 0
2934 #define QUALIFY_MAX 1
2935 #define QUALIFY_name 1
2947 qualified_name[0] =
'\0';
2959 &builtin_function_ABBREV ,
2960 &builtin_function_ABS ,
2961 &builtin_function_ADDRESS ,
2962 &builtin_function_ARG ,
2963 &builtin_function_B2X ,
2964 &builtin_function_BITAND ,
2965 &builtin_function_BITOR ,
2966 &builtin_function_BITXOR ,
2967 &builtin_function_C2D ,
2968 &builtin_function_C2X ,
2969 &builtin_function_CENTER ,
2970 &builtin_function_CENTRE ,
2971 &builtin_function_CHANGESTR ,
2972 &builtin_function_CHARIN ,
2973 &builtin_function_CHAROUT ,
2974 &builtin_function_CHARS ,
2975 &builtin_function_COMPARE ,
2976 &builtin_function_CONDITION ,
2977 &builtin_function_COPIES ,
2978 &builtin_function_COUNTSTR ,
2979 &builtin_function_D2C ,
2980 &builtin_function_D2X ,
2981 &builtin_function_DATATYPE ,
2982 &builtin_function_DATE ,
2983 &builtin_function_DELSTR ,
2984 &builtin_function_DELWORD ,
2985 &builtin_function_DIGITS ,
2986 &builtin_function_ERRORTEXT ,
2987 &builtin_function_FORM ,
2988 &builtin_function_FORMAT ,
2989 &builtin_function_FUZZ ,
2990 &builtin_function_INSERT ,
2991 &builtin_function_LASTPOS ,
2992 &builtin_function_LEFT ,
2993 &builtin_function_LENGTH ,
2994 &builtin_function_LINEIN ,
2995 &builtin_function_LINEOUT ,
2996 &builtin_function_LINES ,
2997 &builtin_function_ORXMAX ,
2998 &builtin_function_ORXMIN ,
2999 &builtin_function_OVERLAY ,
3000 &builtin_function_POS ,
3001 &builtin_function_QUEUED ,
3002 &builtin_function_RANDOM ,
3003 &builtin_function_REVERSE ,
3004 &builtin_function_RIGHT ,
3005 &builtin_function_SIGN ,
3006 &builtin_function_SOURCELINE ,
3007 &builtin_function_SPACE ,
3008 &builtin_function_STREAM ,
3009 &builtin_function_STRIP ,
3010 &builtin_function_SUBSTR ,
3011 &builtin_function_SUBWORD ,
3012 &builtin_function_SYMBOL ,
3013 &builtin_function_TIME ,
3014 &builtin_function_TRACE ,
3015 &builtin_function_TRANSLATE ,
3016 &builtin_function_TRUNC ,
3017 &builtin_function_VALUE ,
3018 &builtin_function_VAR ,
3019 &builtin_function_VERIFY ,
3020 &builtin_function_WORD ,
3021 &builtin_function_WORDINDEX ,
3022 &builtin_function_WORDLENGTH ,
3023 &builtin_function_WORDPOS ,
3024 &builtin_function_WORDS ,
3025 &builtin_function_X2B ,
3026 &builtin_function_X2C ,
3027 &builtin_function_X2D ,
3028 &builtin_function_XRANGE ,
3029 &builtin_function_USERID ,
3030 &builtin_function_LOWER ,
3031 &builtin_function_UPPER ,
3032 &builtin_function_RXFUNCADD ,
3033 &builtin_function_RXFUNCDROP ,
3034 &builtin_function_RXFUNCQUERY ,
3035 &builtin_function_ENDLOCAL ,
3036 &builtin_function_SETLOCAL ,
3037 &builtin_function_QUEUEEXIT ,
3038 &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)
#define TEXT_BIF_TARGET2(x, n1, n2)
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)
RexxText * requiredTextArg(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 TEXT_BIF_TARGET1(x, n)
#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 * raw_string(stringsize_t l)
RexxString * new_string(const char *s, stringsize_t l)
#define STRING_COMPOUND_NAME
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 formatNormalDate(char *buffer, size_t size, const char *sep)
void formatMinutes(char *buffer, size_t size)
void formatHours(char *buffer, size_t size)
void formatNormalTime(char *buffer, size_t size)
void formatBaseTime(char *buffer)
void formatBaseDate(char *buffer, size_t size)
void formatWeekDay(char *buffer)
void setDate(wholenumber_t newYear, wholenumber_t newDay)
void formatMonthName(char *buffer)
bool setMinutes(wholenumber_t m)
void formatCivilTime(char *buffer, size_t size)
bool setBaseDate(wholenumber_t basedays)
bool parseUsaDate(const char *date, const char *sep, wholenumber_t currentYear)
bool parseOrderedDate(const char *date, const char *sep, wholenumber_t currentYear)
void formatLongTime(char *buffer, size_t size)
bool parseNormalTime(const char *date)
void formatTimeZone(char *buffer)
void formatUsaDate(char *buffer, size_t size, const char *sep)
void formatSeconds(char *buffer, size_t size)
bool parseLongTime(const char *date)
bool parseEuropeanDate(const char *date, const char *sep, wholenumber_t currentYear)
bool parseCivilTime(const char *date)
void formatDays(char *buffer, size_t size)
void formatStandardDate(char *buffer, size_t size, const char *sep)
bool setBaseTime(int64_t basetime)
bool setHours(wholenumber_t h)
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 formatEuropeanDate(char *buffer, size_t size, const char *sep)
void formatUnixTime(char *buffer)
void formatOrderedDate(char *buffer, size_t size, const char *sep)
void setTimeZoneOffset(int64_t o)
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 *)
RexxString * bitXor(RexxString *, RexxString *)
char putChar(size_t p, char c)
RexxInteger * posRexx(RexxString *, RexxInteger *, RexxInteger *)
bool strCompare(const char *s)
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)