%CONTROL X'0FFFFFFF' %SYSTEMROUTINESPEC MOVE(%INTEGER L,FROM,TO) %SYSTEMROUTINESPEC ETOI(%INTEGER AD,L) %SYSTEMROUTINESPEC ITOE(%INTEGER AD,L) %SYSTEMINTEGERFNSPEC JSREAD (%INTEGER %C NAME DR0,NAME DR1, %C INT DR0,INT DR1, %C STR DR0,STR DR1, %C BOOL DR0,BOOL DR1) %SYSTEMINTEGERFNSPEC JS WRITE (%INTEGER NAME DR0,NAME DR1, %C INT DR0,INT DR1, %C STR DR0,STR DR1, %C BOOL DR0,BOOL DR1) !********************************************************************** ! ! WRITE JS VAR ! !********************************************************************** ! %SYSTEMINTEGERFN WRITE JS VAR (%STRING(32) NAME, %C %INTEGER OPTION, %C RADDR) ! %BYTEINTEGERARRAY WORK (0:255) %INTEGER INT DR0,INT DR1,STR DR0,STR DR1,NAME DR0,NAME DR1 %INTEGER RC ! ITOE(ADDR(NAME)+1,LENGTH(NAME)) %IF OPTION = 1 %THEN %START ! JOB SPACE VARIABLE IS OF TYPE INT INT DR0 = X'30000001' INT DR1 = RADDR STR DR0 = -1 STR DR1 = -1 %FINISH %ELSE %START ! JOB SPACE VARIABLE IS OF TYPE STRING MOVE(BYTEINTEGER(RADDR),RADDR+1,ADDR(WORK(1))) ITOE(ADDR(WORK(1)),BYTEINTEGER(RADDR)) STR DR0 = X'18000000'! BYTE INTEGER(RADDR) STR DR1 = ADDR(WORK(1)) INT DR0 = -1 INT DR1 = -1 %FINISH NAME DR0 = X'18000000'! LENGTH(NAME) NAME DR1 = ADDR(NAME)+1 %RESULT = JS WRITE(NAME DR0,NAME DR1, %C INT DR0, INT DR1, %C STR DR0, STR DR1, %C -1,-1) %END ;! OF WRITE JS VAR ! ! %SYSTEMINTEGERFN READ JS VAR(%STRING(32) NAME, %C %INTEGER OPTION,RADDR) %INTEGER I,I DR0,I DR1,S DR0,S DR1,RC %BYTEINTEGERARRAY WSTRING(0:255) %LONGINTEGER LI ITOE(ADDR(NAME)+1,LENGTH(NAME)) %IF OPTION = 1 %THEN %START ;! OPTION=1 INDICATES AN INTEGER JS VAR S DR0=-1 S DR1=-1 I DR0=X'30000001' I DR1=ADDR(LI) %FINISH %ELSE %START ! OPTION=2 INDICATES A STRING JS VAR I DR0=-1 I DR1=-1 S DR0=X'180000FF' S DR1=ADDR(WSTRING(1)) %FINISH RC=JSREAD (X'18000000'! LENGTH(NAME),ADDR(NAME)+1, %C I DR0,I DR1, %C S DR0,S DR1, %C -1,-1) %IF RC > 0 %THEN %RESULT = RC %IF OPTION=1 %THEN %START LONGINTEGER(RADDR)=LI %FINISH %ELSE %START %CYCLE I=255,-1,1 %EXIT %IF WSTRING(I)#X'40' %REPEAT %IF WSTRING(I)=C' ' %AND I=1 %THEN %START STRING(RADDR)="" %FINISH %ELSE %START ETOI(ADDR(WSTRING(1)),I) WSTRING(0)=I STRING(RADDR)=STRING(ADDR(WSTRING(0))) %FINISH %FINISH %RESULT=0 %END ;! OF READ JS VAR ! %ENDOFFILE