1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
// hpccsystems.com
/******************
Multi-line comment
******************/
import std.math.job;
IMPORT Str;
/****************** TYPES ******************/
R1 := RECORD
integer1 F1;
UNSIGNED4 F2;
STRING100 F3;
REAL4 R1;
REAL8 R2;
REAL9 R2; // This should not match a type
boolean B1;
decimal23 D1;
udecimal3 D2;
END;
D1 := dataset('RTTEMP::SomeFile',R1,THOR);
D1 := DATASET('RTTEMP::SomeFile',R1,THOR);
/****************** TEMPLATES ******************/
#append
#APPEND
#inmodule
/****************** NUMBERS AND STRINGS ******************/
ArcCosine := acos(0.55);
DATA2 MyHexString := x'0D0A'; // a 2-byte hexadecimal string
MyDataString := D'abcd'; // same as: (DATA)'abcd'
MyUnicodeString := U'abcd'; // same as: (UNICODE)'abcd'
MyUnicodeString := U'abcd\353'; // becomes 'abcd�'
MyVarString := V'abcd'; // same as: (VARSTRING)'abcd'
MyQString := Q'ABCD'; // same as: (QSTRING)'ABCD'
MyInt1 := 10; // value of MyInt1 is the INTEGER value 10
MyInt2 := 0x0A; // value of MyInt2 is the INTEGER value 10
MyInt3 := 0Ax; // value of MyInt3 is the INTEGER value 10
MyInt4 := 0b1010; // value of MyInt4 is the INTEGER value 10
MyInt5 := 1010b; // value of MyInt5 is the INTEGER value 10
MyReal := 10.0; // value of MyReal is the REAL value 10.0
MyRea2 := 1.0e1; // value of MyReal2 is the REAL value 10.0
MyRea3 := 1.0E1; // value of MyReal3 is the REAL value 10.0
MyFunc(STRING1 val, SET OF STRING1 S=ALL) := val IN S;
eMails := REGEXFINDSET('\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}' , sampleStr);
eMails2 := REGEXFINDSET(U'\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}', sampleStr2);
//check for presence in passed set, if passed
SET OF INTEGER4 MySet := IF(SomeCondition=TRUE,[88888,99999,66666,33333,55555],ALL);
MyRecs := MyFile(Zip IN MySet);
str := '---\'---';
/****************** BLOCKS (not working currently) ******************/
INTEGER addone(INTEGER p) := EMBED(Python)
# Python code that returns one more than the value passed to it
if p < 10:
return p+1
else:
return 0
ENDEMBED;
REAL8 colors_should_be_different_here := 10.5;
BEGINC++
#option action
struct tm localt; // localtime in "tm" structure
time_t timeinsecs; // variable to store time in secs
time(&timeinsecs);
localtime_r(&timeinsecs,&localt);
char temp[15];
strftime(temp , 15, "%Y%m%d%H%M%S", &localt); // Formats the localtime to YYYYMMDDhhmmss
strncpy(__result, temp, 14);
ENDC++;
REAL8 colors_should_be_different_here := 10.5;
AddOne(num) := FUNCTIONMACRO
LOCAL numPlus := num + 1; //LOCAL required here
RETURN numPlus;
ENDMACRO;
/****************** NESTED ******************/
MyMod := MODULE
SHARED x := 88;
y := 42;
EXPORT InMod := MODULE //nested MODULE
EXPORT Val1 := x + 10;
EXPORT Val2 := y + 10;
END;
END;
/****************** PATTERNS ******************/
PATTERN ws := PATTERN('[ \t\r\n]');
PATTERN arb := PATTERN('[-!.,\t a-zA-Z0-9]')+;
PATTERN number := PATTERN('[0-9]')+;
PATTERN age := '(' number OPT('/I') ')';
PATTERN role := '[' arb ']';
PATTERN m_rank := '<' number '>';
PATTERN actor := arb OPT(ws '(I)' ws);
MyFunc(STRING1 val, SET OF STRING1 S=ALL) := val IN S;
/****************** JOINS *******************/
Bld1 := BUILD(AlphaKey ,OVERWRITE);
Bld2 := BUILD(SeqKey,OVERWRITE);
peopleRecord := RECORD
INTEGER8 id;
STRING20 addr;
END;
peopleDataset := DATASET([{3000,'LONDON'},{3500,'SMITH'},
{30,'TAYLOR'}], peopleRecord);
joinedRecord := RECORD
PtblRec;
peopleRecord;
END;
joinedRecord doJoin(peopleRecord l, Ptbl r) := TRANSFORM
SELF := l;
SELF := r;
END;
FilledRecs1 := JOIN(peopleDataset, Ptbl,LEFT.id=RIGHT.seq,
doJoin(LEFT,RIGHT), KEYED(SeqKey));
FilledRecs2 := JOIN(peopleDataset, Ptbl,LEFT.addr=RIGHT.Lname,
doJoin(LEFT,RIGHT), KEYED(AlphaKey));
SEQUENTIAL(PtblOut,Bld1,Bld2,OUTPUT(FilledRecs1),OUTPUT(FilledRecs2))
/****************** JOINS *******************/
OUTPUT(d, {Label := Subject, Value := Result}, NAMED('BarChart'));
|