Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Tokenize-a-string/PL-M/tokenize-a-string.plm
Normal file
40
Task/Tokenize-a-string/PL-M/tokenize-a-string.plm
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
100H:
|
||||
/* CP/M CALLS */
|
||||
BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS;
|
||||
EXIT: PROCEDURE; CALL BDOS(0,0); END EXIT;
|
||||
PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT;
|
||||
|
||||
/* SPLIT A STRING ON CHARACTER 'SEP'.
|
||||
THE 'PARTS' ARRAY WILL CONTAIN POINTERS TO THE START OF EACH ELEMENT.
|
||||
THE AMOUNT OF PARTS IS RETURNED.
|
||||
*/
|
||||
TOKENIZE: PROCEDURE (SEP, STR, PARTS) ADDRESS;
|
||||
DECLARE SEP BYTE, (STR, PARTS) ADDRESS;
|
||||
DECLARE (N, P BASED PARTS) ADDRESS;
|
||||
DECLARE CH BASED STR BYTE;
|
||||
N = 0;
|
||||
LOOP:
|
||||
P(N) = STR;
|
||||
N = N + 1;
|
||||
DO WHILE CH <> '$' AND CH <> SEP;
|
||||
STR = STR + 1;
|
||||
END;
|
||||
IF CH = '$' THEN RETURN N;
|
||||
CH = '$';
|
||||
STR = STR + 1;
|
||||
GO TO LOOP;
|
||||
END TOKENIZE;
|
||||
|
||||
/* TEST ON THE GIVEN INPUT */
|
||||
DECLARE HELLO (24) BYTE INITIAL ('HELLO,HOW,ARE,YOU,TODAY$');
|
||||
DECLARE PARTS (10) ADDRESS;
|
||||
DECLARE (I, LEN) ADDRESS;
|
||||
|
||||
LEN = TOKENIZE(',', .HELLO, .PARTS);
|
||||
DO I = 0 TO LEN-1;
|
||||
CALL PRINT(PARTS(I));
|
||||
CALL PRINT(.'. $');
|
||||
END;
|
||||
|
||||
CALL EXIT;
|
||||
EOF;
|
||||
Loading…
Add table
Add a link
Reference in a new issue