/* -*-Macsyma-*- */ EVAL_WHEN(BATCH,TTYOFF:TRUE)$ /*ASB;DISOL 7 2:37pm Wednesday, 4 November 1981 7:53pm Saturday, 29 May 1982 Added a DIAGEVAL_VERSION for this file. 1:44pm Saturday, 12 June 1982 Changed loadflags to getversions, DEFINE_VARIABLE:'MODE. 10:23am Sunday, 1 May 1983 ASB;DISOL Multics compatibility. */ EVAL_WHEN(TRANSLATE, DEFINE_VARIABLE:'MODE, MODE_DECLARE(FUNCTION(FREEOFL),BOOLEAN), TRANSCOMPILE:TRUE)$ PUT('DISOL,8,'VERSION)$ DEFINE_VARIABLE(IFORP,FALSE,BOOLEAN)$ IF STATUS(FEATURE,ITS)=TRUE THEN SETUP_AUTOLOAD([GENUT,FASL,DSK,DGVAL], 'ORPARTITIONL,'FREEOFL)$ DISOLATE(EXP,[ORIG_ISO_LIST]):=BLOCK( [PARTSWITCH:TRUE,IFORP:TRUE,PIECE,INFLAG:TRUE], DISOLATE1(EXP,ORIG_ISO_LIST))$ DISOLATE1(EXP,VARLIST):=BLOCK( [IP0DUM:INPART(EXP,0)], IF VARLIST=[] THEN RETURN(EXP), IF FREEOFL(VARLIST,EXP) THEN RETURN(NOT_ATOM_ELABEL(EXP)), IF MEMBER(EXP,VARLIST) OR MEMBER(IP0DUM,VARLIST) THEN RETURN(EXP), IF IP0DUM="*" THEN IF ISOLATE_WRT_TIMES THEN DISOLATE2("*",EXP,VARLIST) ELSE MAP(LAMBDA([DUM],DISOLATE1(DUM,VARLIST)),EXP) ELSE IF IP0DUM="+" THEN DISOLATE2("+",EXP,VARLIST) ELSE MAP(LAMBDA([DUM],DISOLATE1(DUM,VARLIST)),EXP))$ NOT_ATOM_ELABEL(EXP):=IF NOT ATOM(EXP) THEN ELABEL(EXP) ELSE EXP$ DISOLATE2(OP,EXP,VARLIST):=BLOCK( [SPLITDUM:ORPARTITIONL(EXP,OP,VARLIST),LSPLITDUM], APPLY(OP,[NOT_ATOM_ELABEL(FIRST(SPLITDUM)), IF INPART(LSPLITDUM:LAST(SPLITDUM),0)=OP THEN MAP(LAMBDA([DUM],DISOLATE1(DUM,VARLIST)),LSPLITDUM) ELSE DISOLATE1(LSPLITDUM,VARLIST)]))$ ELABEL(EXP):=BLOCK( [E_LABELS:APPLY('LABELS,[LINECHAR]),OLDDUM:FALSE], FOR IDUM IN E_LABELS DO IF EXP=APPLY('EV,[IDUM]) THEN RETURN(OLDDUM:IDUM), IF OLDDUM=FALSE THEN IF DISPFLAG THEN FIRST(LDISP(EXP)) ELSE ?ELABEL(EXP) ELSE OLDDUM)$ EVAL_WHEN(BATCH,TTYOFF:FALSE)$