V10/cmd/spitbol/gpmbif.gpm

!
! Built-ins for V6
!
{CODE APPEND,<AL1 AL2>}
{CODE CAPS,<REPLACE(AL1,LOWLETS,UPLETS)>}
{CODE CENTER,<?PUTBREAK(0) ?PUTCHARS((LE(T = $LINELENGTH - LSIZE(AL1),0)-
     ,DUPL(HS,T / 2)) AL1) ?PUTBREAK(0)>}
{CODE CHAR,<SUBSTR(&ALPHABET,AL1 + 1,1)>}
{CODE DATE,<SUBSTR(DATE(),1,11)>}
{CODE DBL,<OVER(AL1,AL1)>}
{CODE DISPLAY,<?(QUERY = AL1) ?(TERMINAL = )>}
{CODE DSIZE,<(LSIZE(CONVERT(MACDEF(AL1),.STRING)),LSIZE(EVAL(MACROS['D'])))>}
{CODE DUPL,<DUPL(AL1,AL2)>}
{CODE EJECT,<SUBSTR(&ALPHABET,13,1)>}
{SETQ ENDPAGE,{EJECT}}
{CODE FLUSH,<TSETSTACK[REPLACE(AL1,LOWLETS,UPLETS)] = >}
{SETQ FJ,{SET FILL}{SET JUST}}
{CODE GPMIFY,<APPLY((DIFFER(PFLG) .GPMPRINT, .GPMIFY), AL1, NULLARGS)>}
{SETQ IF,{GPMIFY <{COND {>{D 2} {D 1}<,>{D 3}<},>{D 4}<,,>{D 5}<}>}}
{SETQ IF\*,1}
{CODE INDEX,<(IDENT(AL2) 1,-
	?(AL1 ? BREAKX(SUBSTR(AL2,1,1)) AL2 @T) (T - SIZE(AL2) + 1), 0)>}
{CODE LIN,<SET('LMG',$LMG + AL1,'T')>}
{SETQ LITERAL,{BRK}{TSET INPUT,,ENDTEXT={COND {LEQ @1},!**,,@1},-
	INFORMAT=1,FILL=1,JUST=1}}
{SETQ LOAD,{COND {LEQ @2},{TSET INPUT,@1},,-
	{TSET INPUT,@1,BEGINTEXT=!{D 2},ENDTEXT=!**}}}
{CODE LPAD,<(LE(AL2,T = LSIZE(AL1)),-
	LE(SIZE(AL[3]),1) DUPL((IDENT(AL[3]) HS, AL[3]),AL2 - T),-
	LSUBSTR(DUPL(AL[3],AL2),1,AL2 - T)) AL1>}
{SETQ NFJ,{SET FILL,1}{SET JUST,1}}
{SETQ NEWPAGE,{LS 1}{COND {GT @PAGENUM,1},-
       {LPAD PAGE~{PAGENUM},@LINELENGTH}}{LS 2}}
{SETQ OUTDENT,{BRK}{TSET.- LMG,@1}{TSET NEWLINE,{D NEWLINE}-
       <{RESTORE LMG,NEWLINE}>}}
{SETQ P,{SET LINENUM,1}}
{CODE PARA,<?PUTBREAK(1) PUTCHARS(DUPL(HS,5))>}
{CODE PREPEND,<AL2 AL1>}
{CODE QUERY,<?(QUERY = AL1) TERMINAL>}
{CODE REMDR,<REMDR(AL1,AL2)>}
{CODE REPLACE,<REPLACE(AL1,AL2,(EQ(SIZE(AL[3]),1) DUPL(AL[3],SIZE(AL2)),-
        AL[3]))>}
{SETQ RESET,{SET RMG,75}{SET LMG,10}{SET LINENUM,1}{SET PAGENUM,1}-
	{SET BIAS,0}{SET SPACING,1}{NFJ}{SET PAGELENGTH,55}-
	{SET BSLACK,0}{SET HS,~}}
{CODE RIN,<SET('RMG',$RMG - AL1,'T')>}
{CODE RPAD,<AL1 (LE(AL2,T = LSIZE(AL1)),-
	LE(SIZE(AL[3]),1) DUPL((IDENT(AL[3]) HS, AL[3]),AL2 - T),-
	LSUBSTR(DUPL(AL[3],AL2),1,AL2 - T))>}
{CODE SIZE,<LSIZE(AL1)>}
{CODE SUBSTR,<LSUBSTR(AL1,AL2,AL[3])>}
{SETQ SYSLOAD,<{LOAD SYS$LIBRARY:GPMLIB.GPM,@1}>}
{CODE T,<(GT(AL1,$LINELENGTH),LT(AL1,1),-
	(GT(AL1,T = LSIZE(LINE)),PUTBREAK(0) ?(T = 0)) -
	(LE(SIZE(AL2),1) DUPL((IDENT(AL2) HS, AL2),AL1 - (T + 1)),-
	  LSUBSTR(DUPL(AL2,AL1),1,AL1 - (T + 1))))>}
{CODE UL,<(IDENT(AL1), OVER(REPLACE((IMAGES(AL[1]))[0],-
     (IDENT(AL2) REPLACE(AL1,SP,BS),REPLACE(AL1,AL2,DUPL(BS,SIZE(AL2)))),-
     DUPL('_',SIZE(AL1))),AL1))>}
{CODE +,<AL1 + AL2>}
{CODE -,<AL1 - AL2>}
{CODE *,<AL1 * AL2>}
{CODE /,<AL1 / AL2>}
{CODE ADD1,<AL1 + 1>}
{CODE SUB1,<AL1 - 1>}