From: SMTP%"mailserv-reply@kopc.hhs.dk" 3-JAN-1994 09:13:50.40 To: EVERHART CC: Subj: [PROF]PROF.1-OF-1;1 Date: Mon, 03 Jan 1994 14:41:25 +0100 From: "PMDF Mailserv V4.2" Subject: [PROF]PROF.1-OF-1;1 To: EVERHART@arisia.gce.com Message-id: <01H78ZQUOKQU8ZDZ76@kopc.hhs.dk> MIME-version: 1.0 Content-type: TEXT/PLAIN Content-transfer-encoding: 7BIT $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.2 $! On 4-FEB-1993 09:33:11.27 By user ARNE $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- December 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. GET_BYT.FOR;1 $! 2. PROFREP.FOR;1 $! 3. QS.FOR;1 $! 4. UTL.FOR;1 $! 5. PROF.MAR;1 $! 6. SYS2.MAR;1 $! 7. BUILD.COM;1 $! 8. USAGE.TXT;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking file ", P1 $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b); IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine; MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO( COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO( COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X`20`20`20`20`20`20SUBROUTINE`20GET_BYT(IO,STR,N) X`20`20`20`20`20`20INTEGER*4`20IO,N X`20`20`20`20`20`20CHARACTER*(*)`20STR XC X`20`20`20`20`20`20INTEGER*4`20R1,RN,I,IX,L,LL X`20`20`20`20`20`20CHARACTER*512`20REC XC X`20`20`20`20`20`20L=0 X`20`20`20`20`20`20R1=(N-1)/512+1 X`20`20`20`20`20`20RN=(N+LEN(STR)-2)/512+1 X`20`20`20`20`20`20READ(UNIT=IO,REC=R1,FMT='(A512)')`20REC X`20`20`20`20`20`20IX=N-(R1-1)*512 X`20`20`20`20`20`20LL=MIN(LEN(STR),512-IX+1) X`20`20`20`20`20`20STR(L+1:L+LL)=REC(IX:IX+LL-1) X`20`20`20`20`20`20L=L+LL X`20`20`20`20`20`20DO`20100`20I=R1+1,RN-1 X`20`20`20`20`20`20`20`20READ(UNIT=IO,REC=I,FMT='(A512)')`20REC X`20`20`20`20`20`20`20`20LL=512 X`20`20`20`20`20`20`20`20STR(L+1:L+LL)=REC(1:512) X`20`20`20`20`20`20`20`20L=L+LL X100`20`20`20CONTINUE X`20`20`20`20`20`20IF(RN.GT.R1)`20THEN X`20`20`20`20`20`20`20`20READ(UNIT=IO,REC=RN,FMT='(A512)')`20REC X`20`20`20`20`20`20`20`20LL=LEN(STR)-L X`20`20`20`20`20`20`20`20STR(L+1:L+LL)=REC(1:LL) X`20`20`20`20`20`20`20`20L=L+LL X`20`20`20`20`20`20ENDIF XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END $ call unpack GET_BYT.FOR;1 843869925 "" $! $ create 'f' XC XC`20`20Content`20:`20PROFREP-program XC XC`20`20Author`20`20:`20Arne`20Vajh`F8j`20(october`201992) XC X`20`20`20`20`20`20PROGRAM`20PROFREP XC X`20`20`20`20`20`20INTEGER*4`20FNMLEN1,FNMLEN2,DUMMY X`20`20`20`20`20`20LOGICAL*4`20SIZE,CUMSIZE,ALPHA X`20`20`20`20`20`20CHARACTER*256`20FNM1,FNM2 XC X`20`20`20`20`20`20WRITE(UNIT=6,FMT='(1X,19HEnter`20input-file>`20`20,$)') X`20`20`20`20`20`20READ(UNIT=5,FMT='(Q,A)')`20FNMLEN1,FNM1 X`20`20`20`20`20`20WRITE(UNIT=6,FMT='(1X,19HEnter`20output-file>`20,$)') X`20`20`20`20`20`20READ(UNIT=5,FMT='(Q,A)')`20FNMLEN2,FNM2 X`20`20`20`20`20`20SIZE=.TRUE. X`20`20`20`20`20`20CUMSIZE=.TRUE. X`20`20`20`20`20`20ALPHA=.TRUE. XC X`20`20`20`20`20`20CALL`20PROFREP_REPGEN(FNM1(1:FNMLEN1),FNM2(1:FNMLEN2), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20SI VZE,CUMSIZE,ALPHA) XC X`20`20`20`20`20`20END XC******************** X`20`20`20`20`20`20SUBROUTINE`20PROFREP_REPGEN(FNM1,FNM2,SIZE,CUMSIZE,ALPHA) X`20`20`20`20`20`20LOGICAL*4`20SIZE,CUMSIZE,ALPHA X`20`20`20`20`20`20CHARACTER*(*)`20FNM1 X`20`20`20`20`20`20CHARACTER*(*)`20FNM2 XC X`20`20`20`20`20`20INTEGER*4`20MAX_SYM X`20`20`20`20`20`20PARAMETER`20(MAX_SYM=2500) X`20`20`20`20`20`20INTEGER*4`20IO1,IO2,FNMLEN,I,J,LINLEN,ILIN(33), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20NSYM,LSYM(MAX_SYM),ADR(MAX_SYM), VIX(MAX_SYM), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20C(MAX_SYM),CC(MAX_SYM),ALLC X`20`20`20`20`20`20CHARACTER*32`20SYM(MAX_SYM) X`20`20`20`20`20`20CHARACTER*132`20LIN X`20`20`20`20`20`20CHARACTER*256`20FNM X`20`20`20`20`20`20EQUIVALENCE`20(LIN,ILIN(1)) XC X`20`20`20`20`20`20IO1=77 X`20`20`20`20`20`20IO2=88 X`20`20`20`20`20`20OPEN(UNIT=IO1,FILE=FNM1,STATUS='OLD') X`20`20`20`20`20`20OPEN(UNIT=IO2,FILE=FNM2,STATUS='NEW',CARRIAGECONTROL='LIST') V XC X`20`20`20`20`20`20READ(UNIT=IO1,FMT='(Q,A)')`20FNMLEN,FNM X`20`20`20`20`20`20WRITE(UNIT=IO2,FMT='(13HProfile`20on`20:`20,A,/)')`20FNM(1:F VNMLEN) XC X`20`20`20`20`20`20NSYM=0 X`20`20`20`20`20`20CALL`20UTL_READ_SYMTAB(FNM(1:FNMLEN),NSYM,SYM,LSYM,ADR,0) X`20`20`20`20`20`20CALL`20QS_INT_IX(ADR,NSYM,IX) X`20`20`20`20`20`20NSYM=NSYM+1 X`20`20`20`20`20`20LSYM(NSYM)=16 X`20`20`20`20`20`20SYM(NSYM)(1:LSYM(NSYM))='(system-calls)' X`20`20`20`20`20`20ADR(NSYM)=ADR(NSYM-1)+1000 X`20`20`20`20`20`20IX(NSYM)=NSYM X`20`20`20`20`20`20DO`20100`20I=1,NSYM X`20`20`20`20`20`20`20`20C(I)=0 X`20`20`20`20`20`20`20`20CC(I)=0 X100`20`20`20CONTINUE XC X`20`20`20`20`20`20ALLC=0 X200`20`20`20READ(UNIT=IO1,FMT='(Q,A)',END=500)`20LINLEN,LIN X`20`20`20`20`20`20DO`20400`20J=1,ILIN(1) X`20`20`20`20`20`20`20`20I=1 X300`20`20`20`20`20IF(I.EQ.NSYM.OR.(ADR(IX(I)).LE.ILIN(1+J).AND. X`20`20`20`20`20+`20`20`20`20`20ILIN(1+J).LT.ADR(IX(I+1))))`20THEN X`20`20`20`20`20`20`20`20`20`20CC(IX(I))=CC(IX(I))+1 X`20`20`20`20`20`20`20`20`20`20IF(J.EQ.ILIN(1))`20C(IX(I))=C(IX(I))+1 X`20`20`20`20`20`20`20`20ELSE X`20`20`20`20`20`20`20`20`20`20I=I+1 X`20`20`20`20`20`20`20`20`20`20GOTO`20300 X`20`20`20`20`20`20`20`20ENDIF X400`20`20`20CONTINUE X`20`20`20`20`20`20IF(ILIN(1).GT.0)`20ALLC=ALLC+1 X`20`20`20`20`20`20GOTO`20200 XC X500`20`20`20IF(SIZE)`20THEN X`20`20`20`20`20`20`20`20CALL`20QS_INT_IX(C,NSYM-1,IX) X`20`20`20`20`20`20`20`20IX(NSYM)=NSYM X`20`20`20`20`20`20`20`20CALL`20PROFREP_OUTPUT(IO2,NSYM,SYM,LSYM,C,CC,IX,ALLC, X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20'Routines`20in`20ascending`20order:') X`20`20`20`20`20`20ENDIF X`20`20`20`20`20`20IF(CUMSIZE)`20THEN X`20`20`20`20`20`20`20`20CALL`20QS_INT_IX(CC,NSYM-1,IX) X`20`20`20`20`20`20`20`20IX(NSYM)=NSYM X`20`20`20`20`20`20`20`20CALL`20PROFREP_OUTPUT(IO2,NSYM,SYM,LSYM,C,CC,IX,ALLC, X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20'Routines`20in`20cumm.`20ascending`20order:') X`20`20`20`20`20`20ENDIF X`20`20`20`20`20`20IF(ALPHA)`20THEN X`20`20`20`20`20`20`20`20CALL`20QS_STR_IX(SYM,NSYM-1,IX) X`20`20`20`20`20`20`20`20IX(NSYM)=NSYM X`20`20`20`20`20`20`20`20CALL`20PROFREP_OUTPUT(IO2,NSYM,SYM,LSYM,C,CC,IX,ALLC, X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20'Routines`20in`20alphabetically`20order:') X`20`20`20`20`20`20ENDIF XC X`20`20`20`20`20`20CLOSE(UNIT=IO1) X`20`20`20`20`20`20CLOSE(UNIT=IO2) XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END XC******************** X`20`20`20`20`20`20SUBROUTINE`20PROFREP_OUTPUT(IO,NSYM,SYM,LSYM,C,CC,IX,ALLC,TE VXT) X`20`20`20`20`20`20INTEGER*4`20IO,NSYM,LSYM(*),C(*),CC(*),IX(*),ALLC X`20`20`20`20`20`20CHARACTER*(*)`20SYM(*) X`20`20`20`20`20`20CHARACTER*(*)`20TEXT XC X`20`20`20`20`20`20INTEGER*4`20I XC X`20`20`20`20`20`20WRITE(UNIT=IO,FMT='(A,//,T3,7HRoutine,T35,5HCount, X`20`20`20`20`20+`20`20`20`20`20`20T43,7H(perc.),T51,5HCumm.,T59,7H(perc.),/)') V`20TEXT X`20`20`20`20`20`20DO`20100`20I=1,NSYM X`20`20`20`20`20`20`20`20IF(C(IX(I)).GT.0.OR.CC(IX(I)).GT.0)`20THEN X`20`20`20`20`20`20`20`20`20`20WRITE(UNIT=IO,FMT='(T3,A,T35,I6,T43,F6.1,T51,I6, VT59,F6.1)') X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20SYM(IX(I))(1:LSYM(IX(I))),C(IX(I V)), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20100*DBLE(C(IX(I)))/ALLC,CC(IX(I) V), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20100*DBLE(CC(IX(I)))/ALLC X`20`20`20`20`20`20`20`20ENDIF X100`20`20`20CONTINUE X`20`20`20`20`20`20WRITE(UNIT=IO,FMT='()') XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END $ call unpack PROFREP.FOR;1 1104680483 "" $! $ create 'f' XC XC`20`20Content`20:`20QS-routines XC XC`20`20Author`20`20:`20Arne`20Vajh`F8j`20(august`201989) XC XC******************* X`20`20`20`20`20`20SUBROUTINE`20QS_INT_IX(IA,N,IX) X`20`20`20`20`20`20INTEGER*4`20N,IA(*),IX(*) XC XC`20`20`20`20`20Global`20variables X`20`20`20`20`20`20INTEGER*4`20QS_MAXDEP X`20`20`20`20`20`20PARAMETER`20(QS_MAXDEP=32) X`20`20`20`20`20`20INTEGER*4`20L(QS_MAXDEP),R(QS_MAXDEP), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20FIRST(QS_MAXDEP),LAST(QS_MAXDEP) V, X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20LBL(QS_MAXDEP) X`20`20`20`20`20`20COMMON/QS_VAR/L,R,FIRST,LAST,LBL XC XC`20`20`20`20`20Local`20variables X`20`20`20`20`20`20INTEGER*4`20IPIVOT,TMP,K,LK,RK,JUMP XC XC`20`20`20`20`20Initialise`20index X`20`20`20`20`20`20DO`2050`20K=1,N X`20`20`20`20`20`20`20`20IX(K)=K X50`20`20`20`20CONTINUE XC XC`20`20`20`20`20Sort X`20`20`20`20`20`20FIRST(1)=1 X`20`20`20`20`20`20LAST(1)=N X`20`20`20`20`20`20K=1 X100`20`20`20LK=FIRST(K)`20`20`20`20`20 X`20`20`20`20`20`20RK=LAST(K) X`20`20`20`20`20`20IPIVOT=IA(IX((LK+RK)/2)) X200`20`20`20IF(IA(IX(RK)).LE.IPIVOT)`20GOTO`20300 X`20`20`20`20`20`20RK=RK-1 X`20`20`20`20`20`20GOTO`20200 X300`20`20`20IF(IA(IX(LK)).GE.IPIVOT)`20GOTO`20400 X`20`20`20`20`20`20LK=LK+1 X`20`20`20`20`20`20GOTO`20300 X400`20`20`20IF(LK.LE.RK)`20THEN X`20`20`20`20`20`20`20`20TMP=IX(LK) X`20`20`20`20`20`20`20`20IX(LK)=IX(RK) X`20`20`20`20`20`20`20`20IX(RK)=TMP X`20`20`20`20`20`20`20`20LK=LK+1 X`20`20`20`20`20`20`20`20RK=RK-1 X`20`20`20`20`20`20`20`20IF(LK.LE.RK)`20GOTO`20200 X`20`20`20`20`20`20ENDIF X`20`20`20`20`20`20L(K)=LK X`20`20`20`20`20`20R(K)=RK X`20`20`20`20`20`20IF(R(K).GT.FIRST(K))`20THEN X`20`20`20`20`20`20`20`20FIRST(K+1)=FIRST(K) X`20`20`20`20`20`20`20`20LAST(K+1)=R(K) X`20`20`20`20`20`20`20`20K=K+1 X`20`20`20`20`20`20`20`20ASSIGN`20500`20TO`20JUMP X`20`20`20`20`20`20`20`20LBL(K)=JUMP X`20`20`20`20`20`20`20`20GOTO`20100 X`20`20`20`20`20`20ENDIF X500`20`20`20IF(L(K).LT.LAST(K))`20THEN X`20`20`20`20`20`20`20`20FIRST(K+1)=L(K) X`20`20`20`20`20`20`20`20LAST(K+1)=LAST(K) X`20`20`20`20`20`20`20`20K=K+1 X`20`20`20`20`20`20`20`20ASSIGN`20600`20TO`20JUMP X`20`20`20`20`20`20`20`20LBL(K)=JUMP X`20`20`20`20`20`20`20`20GOTO`20100 X`20`20`20`20`20`20ENDIF X600`20`20`20IF(K.GT.1)`20THEN X`20`20`20`20`20`20`20`20JUMP=LBL(K) X`20`20`20`20`20`20`20`20K=K-1 X`20`20`20`20`20`20`20`20GOTO`20JUMP X`20`20`20`20`20`20ENDIF XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END XC******************* X`20`20`20`20`20`20SUBROUTINE`20QS_STR_IX(SA,N,IX) X`20`20`20`20`20`20INTEGER*4`20N,IX(*) X`20`20`20`20`20`20CHARACTER*(*)`20SA(*) XC XC`20`20`20`20`20Global`20variables X`20`20`20`20`20`20INTEGER*4`20QS_MAXDEP X`20`20`20`20`20`20PARAMETER`20(QS_MAXDEP=32) X`20`20`20`20`20`20INTEGER*4`20L(QS_MAXDEP),R(QS_MAXDEP), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20FIRST(QS_MAXDEP),LAST(QS_MAXDEP) V, X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20LBL(QS_MAXDEP) X`20`20`20`20`20`20COMMON/QS_VAR/L,R,FIRST,LAST,LBL XC XC`20`20`20`20`20Local`20variables X`20`20`20`20`20`20INTEGER*4`20K,LK,RK,SL,JUMP,TMP X`20`20`20`20`20`20CHARACTER*512`20SPIVOT XC XC`20`20`20`20`20Initialise`20index X`20`20`20`20`20`20DO`2050`20K=1,N X`20`20`20`20`20`20`20`20IX(K)=K X50`20`20`20`20CONTINUE XC XC`20`20`20`20`20Sort X`20`20`20`20`20`20SL=LEN(SA(1)) X`20`20`20`20`20`20FIRST(1)=1 X`20`20`20`20`20`20LAST(1)=N X`20`20`20`20`20`20K=1 X100`20`20`20LK=FIRST(K)`20`20`20`20`20 X`20`20`20`20`20`20RK=LAST(K) X`20`20`20`20`20`20SPIVOT(1:SL)=SA(IX((LK+RK)/2)) X200`20`20`20IF(SA(IX(RK)).LE.SPIVOT(1:SL))`20GOTO`20300 X`20`20`20`20`20`20RK=RK-1 X`20`20`20`20`20`20GOTO`20200 X300`20`20`20IF(SA(IX(LK)).GE.SPIVOT(1:SL))`20GOTO`20400 X`20`20`20`20`20`20LK=LK+1 X`20`20`20`20`20`20GOTO`20300 X400`20`20`20IF(LK.LE.RK)`20THEN X`20`20`20`20`20`20`20`20TMP=IX(LK) X`20`20`20`20`20`20`20`20IX(LK)=IX(RK) X`20`20`20`20`20`20`20`20IX(RK)=TMP X`20`20`20`20`20`20`20`20LK=LK+1 X`20`20`20`20`20`20`20`20RK=RK-1 X`20`20`20`20`20`20`20`20IF(LK.LE.RK)`20GOTO`20200 X`20`20`20`20`20`20ENDIF X`20`20`20`20`20`20L(K)=LK X`20`20`20`20`20`20R(K)=RK X`20`20`20`20`20`20IF(R(K).GT.FIRST(K))`20THEN X`20`20`20`20`20`20`20`20FIRST(K+1)=FIRST(K) X`20`20`20`20`20`20`20`20LAST(K+1)=R(K) X`20`20`20`20`20`20`20`20K=K+1 X`20`20`20`20`20`20`20`20ASSIGN`20500`20TO`20JUMP X`20`20`20`20`20`20`20`20LBL(K)=JUMP X`20`20`20`20`20`20`20`20GOTO`20100 X`20`20`20`20`20`20ENDIF X500`20`20`20IF(L(K).LT.LAST(K))`20THEN X`20`20`20`20`20`20`20`20FIRST(K+1)=L(K) X`20`20`20`20`20`20`20`20LAST(K+1)=LAST(K) X`20`20`20`20`20`20`20`20K=K+1 X`20`20`20`20`20`20`20`20ASSIGN`20600`20TO`20JUMP X`20`20`20`20`20`20`20`20LBL(K)=JUMP X`20`20`20`20`20`20`20`20GOTO`20100 X`20`20`20`20`20`20ENDIF X600`20`20`20IF(K.GT.1)`20THEN X`20`20`20`20`20`20`20`20JUMP=LBL(K) X`20`20`20`20`20`20`20`20K=K-1 X`20`20`20`20`20`20`20`20GOTO`20JUMP X`20`20`20`20`20`20ENDIF XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END $ call unpack QS.FOR;1 1357334700 "" $! $ create 'f' XC XC`20`20Content`20:`20UTL-routines XC XC`20`20Author`20`20:`20Arne`20Vajh`F8j`20(august`201989) XC XC***************** X`20`20`20`20`20`20SUBROUTINE`20UTL_READ_SYMTAB(IMGNAM,NSYM,SYM,LSYM,ADR,IMGBAS V) X`20`20`20`20`20`20INTEGER*4`20NSYM,LSYM(*),ADR(*),IMGBAS X`20`20`20`20`20`20CHARACTER*(*)`20IMGNAM X`20`20`20`20`20`20CHARACTER*(*)`20SYM(*) XC XC`20`20`20`20`20Local`20variables X`20`20`20`20`20`20INTEGER*4`20IO XC XC`20`20`20`20`20Open`20file X`20`20`20`20`20`20IO=99 X`20`20`20`20`20`20OPEN(UNIT=IO,FILE=IMGNAM,STATUS='OLD',ACCESS='DIRECT', X`20`20`20`20`20+`20`20`20`20`20FORM='FORMATTED',RECORDTYPE='FIXED',RECORDSIZE= V512) XC XC`20`20`20`20`20Read`20debug-symbol-table X`20`20`20`20`20`20CALL`20UTL_READ_SYMTAB1(IO,NSYM,SYM,LSYM,ADR,IMGBAS) XC XC`20`20`20`20`20Read`20global-symbol-table X`20`20`20`20`20`20CALL`20UTL_READ_SYMTAB2(IO,NSYM,SYM,LSYM,ADR,IMGBAS) XC XC`20`20`20`20`20Close`20file X`20`20`20`20`20`20CLOSE(UNIT=IO) XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END XC******************** X`20`20`20`20`20`20SUBROUTINE`20UTL_READ_SYMTAB1(IO,NSYM,SYM,LSYM,ADR,IMGBAS) X`20`20`20`20`20`20INTEGER*4`20IO,NSYM,LSYM(*),ADR(*),IMGBAS X`20`20`20`20`20`20CHARACTER*(*)`20SYM(*) XC XC`20`20`20`20`20Local`20variables X`20`20`20`20`20`20INTEGER*4`20BLKADR,BLKLEN,BASE,OFFS,BUFLEN,DUMINT X`20`20`20`20`20`20LOGICAL*4`20OK X`20`20`20`20`20`20CHARACTER*4`20DUMSTR X`20`20`20`20`20`20CHARACTER*512`20BUF X`20`20`20`20`20`20EQUIVALENCE`20(DUMINT,DUMSTR) XC XC`20`20`20`20`20Read`20image-header X`20`20`20`20`20`20CALL`20GET_BYT(IO,BUF(1:512),1) X`20`20`20`20`20`20CALL`20SYS2_FNDDBGTAB(BUF,BLKADR,BLKLEN) X`20`20`20`20`20`20BASE=(BLKADR-1)*512+1 X`20`20`20`20`20`20OFFS=0 X100`20`20`20IF(OFFS.LT.BLKLEN*512)`20THEN X`20`20`20`20`20`20`20`20DUMINT=0 X`20`20`20`20`20`20`20`20CALL`20GET_BYT(IO,DUMSTR(1:1),BASE+OFFS) X`20`20`20`20`20`20`20`20BUFLEN=DUMINT X`20`20`20`20`20`20`20`20OFFS=OFFS+1 X`20`20`20`20`20`20`20`20CALL`20GET_BYT(IO,BUF(1:BUFLEN),BASE+OFFS) X`20`20`20`20`20`20`20`20CALL`20SYS2_FNDSYM1(BUF(1:BUFLEN),SYM(NSYM+1), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LS VYM(NSYM+1),ADR(NSYM+1),OK) X`20`20`20`20`20`20`20`20ADR(NSYM+1)=ADR(NSYM+1)+IMGBAS X`20`20`20`20`20`20`20`20IF(OK)`20NSYM=NSYM+1 X`20`20`20`20`20`20`20`20OFFS=OFFS+BUFLEN X`20`20`20`20`20`20`20`20GOTO`20100 X`20`20`20`20`20`20ENDIF XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END XC******************** X`20`20`20`20`20`20SUBROUTINE`20UTL_READ_SYMTAB2(IO,NSYM,SYM,LSYM,ADR,IMGBAS) X`20`20`20`20`20`20INTEGER*4`20IO,NSYM,LSYM(*),ADR(*),IMGBAS X`20`20`20`20`20`20CHARACTER*(*)`20SYM(*) XC XC`20`20`20`20`20Local`20variables X`20`20`20`20`20`20INTEGER*4`20BLKADR,BLKLEN,BASE,OFFS,BUFLEN,I,J,DUMINT,IX,NSY VM2 X`20`20`20`20`20`20LOGICAL*4`20OK X`20`20`20`20`20`20CHARACTER*4`20DUMSTR X`20`20`20`20`20`20CHARACTER*5120`20BUF X`20`20`20`20`20`20EQUIVALENCE`20(DUMINT,DUMSTR) XC XC`20`20`20`20`20Read`20image-header X`20`20`20`20`20`20CALL`20GET_BYT(IO,BUF(1:512),1) X`20`20`20`20`20`20CALL`20SYS2_FNDGLBTAB(BUF,BLKADR,BLKLEN) X`20`20`20`20`20`20BASE=(BLKADR-1)*512+1 X`20`20`20`20`20`20OFFS=0 X`20`20`20`20`20`20NSYM2=NSYM X`20`20`20`20`20`20DO`20100`20I=1,BLKLEN X`20`20`20`20`20`20`20`20DUMINT=0 X`20`20`20`20`20`20`20`20CALL`20GET_BYT(IO,DUMSTR(1:2),BASE+OFFS) X`20`20`20`20`20`20`20`20BUFLEN=DUMINT X`20`20`20`20`20`20`20`20OFFS=OFFS+2 X`20`20`20`20`20`20`20`20CALL`20GET_BYT(IO,BUF(1:BUFLEN),BASE+OFFS) X`20`20`20`20`20`20`20`20CALL`20SYS2_FNDSYM2(BUF(1:BUFLEN),OK) X`20`20`20`20`20`20`20`20IF`20(OK)`20THEN X`20`20`20`20`20`20`20`20`20`20IX=1 X50`20`20`20`20`20`20`20`20CALL`20SYS2_FNDSYM3(BUF(IX+1:BUFLEN),SYM(NSYM+1), X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20LSYM(NSYM+1),ADR(NSYM+1),IX,OK) X`20`20`20`20`20`20`20`20`20`20ADR(NSYM+1)=ADR(NSYM+1)+IMGBAS X`20`20`20`20`20`20`20`20`20`20DO`2075`20J=1,NSYM2 X`20`20`20`20`20`20`20`20`20`20`20`20IF(SYM(NSYM+1)(1:LSYM(NSYM+1)).EQ.SYM(J)(1 V:LSYM(J))) X`20`20`20`20`20+`20`20`20`20`20`20`20`20`20OK=.FALSE. X75`20`20`20`20`20`20`20`20CONTINUE X`20`20`20`20`20`20`20`20`20`20IF(OK)`20NSYM=NSYM+1 X`20`20`20`20`20`20`20`20`20`20IF(IX.LT.BUFLEN)`20GOTO`2050 X`20`20`20`20`20`20`20`20ENDIF X`20`20`20`20`20`20`20`20OFFS=OFFS+BUFLEN+(BUFLEN.AND.1) X100`20`20`20CONTINUE XC X`20`20`20`20`20`20RETURN X`20`20`20`20`20`20END $ call unpack UTL.FOR;1 142942270 "" $! $ create 'f' X`20`20`20`20`20`20`20`20.title`20`20prof X; X;`20content`20:`20PROF-program X; X;`20author`20`20:`20Arne`20Vajh`F8j`20(september`201992) X; X`20`20`20`20`20`20`20`20.library`20"sys$library:lib" X`20`20`20`20`20`20`20`20.link`20`20`20"sys$system:sys.stb"/selective_search X`20`20`20`20`20`20`20`20$IHADEF X`20`20`20`20`20`20`20`20$SSDEF X`20`20`20`20`20`20`20`20$CHFDEF X`20`20`20`20`20`20`20`20$PHDDEF X`20`20`20`20`20`20`20`20$SFDEF X`20`20`20`20`20`20`20`20$FABDEF X`20`20`20`20`20`20`20`20$RABDEF X`20`20`20`20`20`20`20`20$RMSDEF X`20`20`20`20`20`20`20`20$JPIDEF X`20`20`20`20`20`20`20`20.macro`20`20CPUTIM X`20`20`20`20`20`20`20`20movl`20`20`20`20@#CTL$GL_PHD,r0 X`20`20`20`20`20`20`20`20movl`20`20`20`20W`5EPHD$L_CPUTIM(r0),cputim X`20`20`20`20`20`20`20`20.endm X`20`20`20`20`20`20`20`20.psect`20`20PROF$DATA`20long,pic,con,lcl,shr,noexe,now Vrt Xargl_dclexh:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20argumentlist`20SYS$DCLEXH X`20`20`20`20`20`20`20`20.long`20`20`201 X`20`20`20`20`20`20`20`20.address`20desblk`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20;`20exit-handler`20block Xargl_canexh:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20argumentlist`20SYS$CANEXH X`20`20`20`20`20`20`20`20.long`20`20`201 X`20`20`20`20`20`20`20`20.address`20desblk`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20;`20exit-handler`20block Xargl_setexv:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20argumentlist`20SYS$SETEXV X`20`20`20`20`20`20`20`20.long`20`20`204 X`20`20`20`20`20`20`20`20.long`20`20`200 X`20`20`20`20`20`20`20`20.address`20prof_trace_disp`20`20`20`20`20`20`20`20; V`20exception`20handler`20address X`20`20`20`20`20`20`20`20.long`20`20`200 X`20`20`20`20`20`20`20`20.long`20`20`200 Xargl_rms1:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20;`20argumentlist`20SYS$RMS`20(with`20FAB) X`20`20`20`20`20`20`20`20.long`20`20`203 X`20`20`20`20`20`20`20`20.address`20fabblk`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20;`20fab X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20error X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20success Xargl_rms2:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20;`20argumentlist`20SYS$RMS`20(with`20RAB) X`20`20`20`20`20`20`20`20.long`20`20`203 Xrab:`20`20`20`20.address`20rabblk`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20;`20rab X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20error X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20succss Xargl_getjpi:`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20argumentlist`20SYS$GETJPI X`20`20`20`20`20`20`20`20.long`20`20`207 X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20efn X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20pid X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20prcnam X`20`20`20`20`20`20`20`20.address`20item`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20itmlst X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20iosb X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20astadr X`20`20`20`20`20`20`20`20.long`20`20`200`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20;`20astprm Xitem:`20`20`20.word`20`20`20256 X`20`20`20`20`20`20`20`20.word`20`20`20JPI$_IMAGNAME X`20`20`20`20`20`20`20`20.address`20imgstr X`20`20`20`20`20`20`20`20.address`20imglen X`20`20`20`20`20`20`20`20.long`20`20`200 Xprfstr:`20.ascii`20`20".PRF" X`20`20`20`20`20`20`20`20.psect`20`20PROF$LOCAL`20long,pic,con,lcl,noshr,noexe, Vwrt Xdesblk:`20.long`20`20`200 X`20`20`20`20`20`20`20`20.address`20prof_exit`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20;`20exit`20handler`20address X`20`20`20`20`20`20`20`20.long`20`20`200 X`20`20`20`20`20`20`20`20.address`20exstat`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20;`20address`20of`20exit`20status Xexstat:`20.blkl`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20exit`20status Xcputim:`20.blkl`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20CPU`20time Xoldcpu:`20.blkl`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20old`20CPU`20time Xsavefp:`20.blkl`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20save`20FP Xfabblk:`20.blkb`20`20`20FAB$S_FABDEF`20`20`20`20`20`20`20`20`20`20`20`20;`20FA VB Xrabblk:`20.blkb`20`20`20RAB$S_RABDEF`20`20`20`20`20`20`20`20`20`20`20`20;`20RA VB Xfnmlen:`20.blkw`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20file-name Xfnmstr:`20.blkb`20`20`20256 Xreclen:`20.blkw`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20record Xrecstr:`20.blkb`20`20`20256 Ximglen:`20.blkw`20`20`201`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20image-name Ximgstr:`20.blkb`20`20`20256 X`20`20`20`20`20`20`20`20.psect`20`20PROF$CODE`20long,pic,con,lcl,shr,exe,nowrt V X; X;`20`20MAIN`20program X; X`20`20`20`20`20`20`20`20.entry`20`20prof,0 X`20`20`20`20`20`20`20`20calls`20`20`20#0,G`5Eprof_init`20`20`20`20`20`20`20 V`20`20`20;`20open`20data-file X`20`20`20`20`20`20`20`20callg`20`20`20argl_dclexh,G`5ESYS$DCLEXH;`20setup`20ex Vit-handler X`20`20`20`20`20`20`20`20callg`20`20`20argl_setexv,G`5ESYS$SETEXV;`20setup`20ex Vception-handler X`20`20`20`20`20`20`20`20movl`20`20`20`20fp,savefp`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20save`20fp`20for`20later`20testing X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r2 X`20`20`20`20`20`20`20`20addl`20`20`20`20#4,B`5E4(ap)`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20fixup`20argumentlist X`20`20`20`20`20`20`20`20CPUTIM X`20`20`20`20`20`20`20`20movl`20`20`20`20cputim,oldcpu`20`20`20`20`20`20`20`20 V`20`20`20;`20save`20CPU`20time X`20`20`20`20`20`20`20`20bispsw`20`20#`5Ex0010`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20set`20trace X`20`20`20`20`20`20`20`20callg`20`20`20(ap),@W`5EIHA$L_TFRADR2(r2);`20call`20pr Vogram X`20`20`20`20`20`20`20`20bicpsw`20`20#`5Ex0010`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20clear`20trace X`20`20`20`20`20`20`20`20callg`20`20`20argl_canexh,G`5ESYS$CANEXH;`20remove`20e Vxit-handler X`20`20`20`20`20`20`20`20calls`20`20`20#0,G`5Eprof_end`20`20`20`20`20`20`20`20 V`20`20`20;`20close`20data-file X`20`20`20`20`20`20`20`20movl`20`20`20`20#SS$_NORMAL,r0 X`20`20`20`20`20`20`20`20ret X; X;`20`20Trace`20dispatcher X; X`20`20`20`20`20`20`20`20.entry`20`20prof_trace_disp,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5ECHF$L_SIGARGLST(ap),r0 X`20`20`20`20`20`20`20`20cmpl`20`20`20`20#SS$_TBIT,B`5ECHF$L_SIG_NAME(r0);`20te Vst`20if`20trace`20fault X`20`20`20`20`20`20`20`20beql`20`20`20`20100$ X`20`20`20`20`20`20`20`20movl`20`20`20`20#SS$_RESIGNAL,r0`20`20`20`20`20`20`20 V`20;`20resignal`20to`20other`20error-handlers X`20`20`20`20`20`20`20`20ret X100$:`20`20`20CPUTIM`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20get`20CPU-time X150$:`20`20`20cmpl`20`20`20`20cputim,oldcpu`20`20`20`20`20`20`20`20`20`20`20; V`20test`20is`20CPU`20usage`20has`20changed X`20`20`20`20`20`20`20`20bleq`20`20`20`20400$ X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5ECHF$L_SIGARGLST(ap),r0 X`20`20`20`20`20`20`20`20pushl`20`20`20B`5ECHF$L_SIG_ARG1(r0)`20`20`20`20;`20pu Vsh`20PC X`20`20`20`20`20`20`20`20movl`20`20`20`20#1,r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20fp,r0 X200$:`20`20`20movl`20`20`20`20B`5ESF$L_SAVE_FP(r0),r0`20`20`20;`20unwind`20cal Vl-stack`20one`20level X`20`20`20`20`20`20`20`20cmpl`20`20`20`20r0,savefp X`20`20`20`20`20`20`20`20beql`20`20`20`20300$ X`20`20`20`20`20`20`20`20pushl`20`20`20B`5ESF$L_SAVE_PC(r0)`20`20`20`20`20`20; V`20push`20saved`20PC X`20`20`20`20`20`20`20`20incl`20`20`20`20r1 X`20`20`20`20`20`20`20`20brb`20`20`20`20`20200$ X300$:`20`20`20popl`20`20`20`20r0`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20;`20pop`20last`20PC`20(=prof) X`20`20`20`20`20`20`20`20decl`20`20`20`20r1 X`20`20`20`20`20`20`20`20pushl`20`20`20r1 X`20`20`20`20`20`20`20`20pushab`20`20(sp) X`20`20`20`20`20`20`20`20calls`20`20`20#1,G`5Eprof_rec`20`20`20`20`20`20`20`20 V`20`20`20;`20dispatch`20to`20recording`20routine X`20`20`20`20`20`20`20`20decl`20`20`20`20cputim X`20`20`20`20`20`20`20`20brw`20`20`20`20`20150$ X400$:`20`20`20movl`20`20`20`20fp,r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5ESF$L_SAVE_FP(r1),r1`20`20`20;`20on Ve`20call-frame`20back X`20`20`20`20`20`20`20`20cmpl`20`20`20`20r1,savefp X`20`20`20`20`20`20`20`20beql`20`20`20`20500$ X`20`20`20`20`20`20`20`20CPUTIM X`20`20`20`20`20`20`20`20movl`20`20`20`20cputim,oldcpu X`20`20`20`20`20`20`20`20bisw2`20`20`20#`5Ex0010,B`5ESF$W_SAVE_PSW(r1);`20set V`20trace X`20`20`20`20`20`20`20`20movl`20`20`20`20#SS$_NORMAL,r0`20`20`20`20`20`20`20 V`20`20`20;`20return`20OK X`20`20`20`20`20`20`20`20ret X500$:`20`20`20CPUTIM X`20`20`20`20`20`20`20`20movl`20`20`20`20cputim,oldcpu X`20`20`20`20`20`20`20`20bicw2`20`20`20#`5Ex0010,B`5ESF$W_SAVE_PSW(r1);`20clear V`20trace X`20`20`20`20`20`20`20`20movl`20`20`20`20#SS$_NORMAL,r0`20`20`20`20`20`20`20 V`20`20`20;`20return`20OK X`20`20`20`20`20`20`20`20ret X; X;`20`20exit`20handler X; X`20`20`20`20`20`20`20`20.entry`20`20prof_exit,`5Em X`20`20`20`20`20`20`20`20calls`20`20`20#0,G`5Eprof_end X`20`20`20`20`20`20`20`20pushl`20`20`20exstat X`20`20`20`20`20`20`20`20calls`20`20`20#1,G`5ESYS$EXIT X; X;`20`20initialize`20recording X; X`20`20`20`20`20`20`20`20.entry`20`20prof_init,`5Em X`20`20`20`20`20`20`20`20callg`20`20`20argl_getjpi,G`5ESYS$GETJPIW`20`20;`20get V`20image-name X`20`20`20`20`20`20`20`20movw`20`20`20`20imglen,fnmlen`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20;`20copy`20image-name`20to`20file-name X`20`20`20`20`20`20`20`20movc3`20`20`20imglen,imgstr,fnmstr X`20`20`20`20`20`20`20`20movab`20`20`20fnmstr,r0`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20;`20change`20extension`20to`20.PRF X`20`20`20`20`20`20`20`20addw2`20`20`20fnmlen,r0 X100$:`20`20`20decl`20`20`20`20r0 X`20`20`20`20`20`20`20`20decw`20`20`20`20fnmlen X`20`20`20`20`20`20`20`20cmpb`20`20`20`20(r0),#46 X`20`20`20`20`20`20`20`20bneq`20`20`20`20100$ X`20`20`20`20`20`20`20`20movl`20`20`20`20prfstr,(r0) X`20`20`20`20`20`20`20`20addw2`20`20`20#4,fnmlen X`20`20`20`20`20`20`20`20movc5`20`20`20#0,#0,#0,#FAB$C_BLN,fabblk`20;`20setup V`20FAB X`20`20`20`20`20`20`20`20movab`20`20`20fabblk,r11 X`20`20`20`20`20`20`20`20movb`20`20`20`20#FAB$C_BID,B`5EFAB$B_BID(r11) X`20`20`20`20`20`20`20`20movb`20`20`20`20#FAB$C_BLN,B`5EFAB$B_BLN(r11) X`20`20`20`20`20`20`20`20movb`20`20`20`20#FAB$M_CR,B`5EFAB$B_RAT(r11) X`20`20`20`20`20`20`20`20movb`20`20`20`20#FAB$C_VAR,B`5EFAB$B_RFM(r11) X`20`20`20`20`20`20`20`20movb`20`20`20`20fnmlen,B`5EFAB$B_FNS(r11) X`20`20`20`20`20`20`20`20moval`20`20`20fnmstr,B`5EFAB$L_FNA(r11) X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms1,G`5ESYS$CREATE`20`20`20`20`20; V`20create`20`26`20open`20file X`20`20`20`20`20`20`20`20movc5`20`20`20#0,#0,#0,#RAB$C_BLN,rabblk`20;`20setup V`20RAB X`20`20`20`20`20`20`20`20movab`20`20`20rabblk,r10 X`20`20`20`20`20`20`20`20movb`20`20`20`20#RAB$C_BID,B`5ERAB$B_BID(r10) X`20`20`20`20`20`20`20`20movb`20`20`20`20#RAB$C_BLN,B`5ERAB$B_BLN(r10) X`20`20`20`20`20`20`20`20movl`20`20`20`20r11,B`5ERAB$L_FAB(r10)`20`20`20`20`20 V`20`20;`20connect`20RAB`20to`20FAB X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms2,G`5ESYS$CONNECT`20`20`20`20; V`20connect`20to`20file X`20`20`20`20`20`20`20`20movab`20`20`20imgstr,B`5ERAB$L_RBF(r10) X`20`20`20`20`20`20`20`20movw`20`20`20`20imglen,B`5ERAB$W_RSZ(r10) X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms2,G`5ESYS$PUT`20`20`20`20`20`20 V`20`20;`20write`20image-name`20to`20file X`20`20`20`20`20`20`20`20ret X; X;`20`20record X; X`20`20`20`20`20`20`20`20.entry`20`20prof_rec,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r0 X`20`20`20`20`20`20`20`20movl`20`20`20`20(r0),r1 X`20`20`20`20`20`20`20`20incl`20`20`20`20r1 X`20`20`20`20`20`20`20`20clrw`20`20`20`20reclen X`20`20`20`20`20`20`20`20movab`20`20`20recstr,r2 X100$:`20`20`20movl`20`20`20`20(r0),(r2)`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20;`20move`20data`20to`20record X`20`20`20`20`20`20`20`20addw`20`20`20`20#4,reclen X`20`20`20`20`20`20`20`20addl2`20`20`20#4,r0 X`20`20`20`20`20`20`20`20addl2`20`20`20#4,r2 X`20`20`20`20`20`20`20`20decl`20`20`20`20r1 X`20`20`20`20`20`20`20`20tstl`20`20`20`20r1 X`20`20`20`20`20`20`20`20bgtr`20`20`20`20100$ X`20`20`20`20`20`20`20`20moval`20`20`20rabblk,r10 X`20`20`20`20`20`20`20`20movab`20`20`20recstr,B`5ERAB$L_RBF(r10) X`20`20`20`20`20`20`20`20movw`20`20`20`20reclen,B`5ERAB$W_RSZ(r10) X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms2,G`5ESYS$PUT`20`20`20`20`20; V`20write`20record`20to`20file X`20`20`20`20`20`20`20`20ret X; X;`20`20end`20recording X; X`20`20`20`20`20`20`20`20.entry`20`20prof_end,`5Em X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms2,G`5ESYS$DISCONNECT`20;`20disco Vnnect`20to`20file X`20`20`20`20`20`20`20`20callg`20`20`20argl_rms1,G`5ESYS$CLOSE`20`20`20`20`20 V`20;`20close`20file X`20`20`20`20`20`20`20`20ret X`20`20`20`20`20`20`20`20.end`20`20`20`20prof $ call unpack PROF.MAR;1 1528780355 "" $! $ create 'f' X`20`20`20`20`20`20`20`20.title`20`20sys2 X; X;`20content`20:`20SYS2-routines X; X;`20author`20`20:`20Arne`20Vajh`F8j`20(november`201989) X; X;- X`20`20`20`20`20`20`20`20.library`20"SYS$LIBRARY:LIB" X`20`20`20`20`20`20`20`20$IACDEF X`20`20`20`20`20`20`20`20$IHADEF X`20`20`20`20`20`20`20`20$IHDDEF X`20`20`20`20`20`20`20`20$OBJDEF XTRUE=-1 XFALSE=0 XEXE$C_MODULE=`5Ex000000BC XEXE$C_ENTRYPOINT=`5Ex000000BE XEXE$C_MACRO=0 XEXE$C_FORTRAN=1 XEXE$C_PASCAL=6 XEXE$C_C=7 X; X;`20readonly`20data`20section X; X`20`20`20`20`20`20`20`20.psect`20`20$PDATA`20quad,pic,con,lcl,shr,noexe,nowrt X; X;`20writeread`20data`20section X; X`20`20`20`20`20`20`20`20.psect`20`20$LOCAL`20quad,pic,con,lcl,noshr,noexe,wrt X; X;`20code`20section X; X`20`20`20`20`20`20`20`20.psect`20`20$CODE`20quad,pic,con,lcl,shr,exe,nowrt X;*************************************** X; X;`20`20SYS2_FNDDBGTAB`20(`20HEADER`20,`20DBGTABADR`20,`20DBGTABLEN`20) X; X;`20`20find`20debug-symbol-table X; X;*************************************** X`20`20`20`20`20`20`20`20.entry`20`20sys2_fnddbgtab,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),r1 X`20`20`20`20`20`20`20`20movzwl`20`20W`5EIHD$W_SYMDBGOFF(r1),r2 X`20`20`20`20`20`20`20`20addl2`20`20`20r2,r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20(r1),@B`5E8(ap) X`20`20`20`20`20`20`20`20movzwl`20`20B`5E8(r1),@B`5E12(ap) X`20`20`20`20`20`20`20`20ret X;*************************************** X; X;`20`20SYS2_FNDGLBTAB`20(`20HEADER`20,`20GLBTABADR`20,`20GLBTABLEN`20) X; X;`20`20find`20global-symbol-table X; X;*************************************** X`20`20`20`20`20`20`20`20.entry`20`20sys2_fndglbtab,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),r1 X`20`20`20`20`20`20`20`20movzwl`20`20W`5EIHD$W_SYMDBGOFF(r1),r2 X`20`20`20`20`20`20`20`20addl2`20`20`20r2,r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),@B`5E8(ap) X`20`20`20`20`20`20`20`20movzwl`20`20B`5E10(r1),@B`5E12(ap) X`20`20`20`20`20`20`20`20ret X;*************************************** X; X;`20`20SYS2_FNDSYM1`20(`20RECORD`20,`20SYMBOL`20,`20SYMBOLLEN`20,`20ADDRESS V`20,`20OK`20) X; X;`20`20find`20symbol`20in`20record X; X;*************************************** X`20`20`20`20`20`20`20`20.entry`20`20sys2_fndsym1,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E8(ap),r2 X`20`20`20`20`20`20`20`20cmpb`20`20`20`20(r1),#EXE$C_MODULE X`20`20`20`20`20`20`20`20bneq`20`20`20`20100$ X;`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E2(r1),language X;`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5E6(r1),modulelen X;`20`20`20`20`20`20`20`20movc3`20`20`20modulelen,B`5E7(r1),module X`20`20`20`20`20`20`20`20movl`20`20`20`20#FALSE,@B`5E20(ap) X`20`20`20`20`20`20`20`20ret X100$:`20`20`20cmpb`20`20`20`20(r1),#EXE$C_ENTRYPOINT X`20`20`20`20`20`20`20`20bneq`20`20`20`20200$ X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E2(r1),@B`5E16(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5E6(r1),@B`5E12(ap) X`20`20`20`20`20`20`20`20movc3`20`20`20@B`5E12(ap),B`5E7(r1),@B`5E4(r2) X`20`20`20`20`20`20`20`20movl`20`20`20`20#TRUE,@B`5E20(ap) X`20`20`20`20`20`20`20`20ret X200$:`20`20`20movl`20`20`20`20#FALSE,@B`5E20(ap) X`20`20`20`20`20`20`20`20ret X;*************************************** X; X;`20`20SYS2_FNDSYM2`20(`20RECORD`20,`20OK`20) X; X;`20`20find`20symbol`20in`20record X; X;*************************************** X`20`20`20`20`20`20`20`20.entry`20`20sys2_fndsym2,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),r1 X`20`20`20`20`20`20`20`20cmpb`20`20`20`20(r1),#OBJ$C_GSD X`20`20`20`20`20`20`20`20bneq`20`20`20`20100$ X`20`20`20`20`20`20`20`20movl`20`20`20`20#TRUE,@B`5E8(ap) X`20`20`20`20`20`20`20`20ret X100$:`20`20`20movl`20`20`20`20#FALSE,@B`5E8(ap) X`20`20`20`20`20`20`20`20ret X;*************************************** X; X;`20`20SYS2_FNDSYM3`20(`20RECORD`20,`20SYMBOL`20,`20SYMBOLLEN`20,`20ADDRESS V`20,`20RECL`20,`20OK`20) X; X;`20`20find`20symbol`20in`20record X; X;*************************************** X`20`20`20`20`20`20`20`20.entry`20`20sys2_fndsym3,`5Em X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(ap),r1 X`20`20`20`20`20`20`20`20movzwl`20`20(r1),r0 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E4(r1),r1 X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5E8(ap),r2 X`20`20`20`20`20`20`20`20cmpb`20`20`20`20B`5EGPS$B_GSDTYP(r1),#GSD$C_PSC X`20`20`20`20`20`20`20`20bneq`20`20`20`20100$ X`20`20`20`20`20`20`20`20addl2`20`20`20#GPS$T_NAME,@B`5E20(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EGPS$B_NAMLNG(r1),r0 X`20`20`20`20`20`20`20`20addl2`20`20`20r0,@B`5E20(ap) X`20`20`20`20`20`20`20`20movl`20`20`20`20#FALSE,@B`5E24(ap) X`20`20`20`20`20`20`20`20ret X100$:`20`20`20cmpb`20`20`20`20B`5ESDF$B_GSDTYP(r1),#GSD$C_SYM X`20`20`20`20`20`20`20`20bneq`20`20`20`20200$ X`20`20`20`20`20`20`20`20addl2`20`20`20#SDF$T_NAME,@B`5E20(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5ESDF$B_NAMLNG(r1),r0 X`20`20`20`20`20`20`20`20addl2`20`20`20r0,@B`5E20(ap) X`20`20`20`20`20`20`20`20movl`20`20`20`20#FALSE,@B`5E24(ap) X`20`20`20`20`20`20`20`20ret X200$:`20`20`20cmpb`20`20`20`20B`5EEPM$B_GSDTYP(r1),#GSD$C_EPM X`20`20`20`20`20`20`20`20bneq`20`20`20`20300$ X`20`20`20`20`20`20`20`20addl2`20`20`20#EPM$T_NAME,@B`5E20(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EEPM$B_NAMLNG(r1),r0 X`20`20`20`20`20`20`20`20addl2`20`20`20r0,@B`5E20(ap) X`20`20`20`20`20`20`20`20movl`20`20`20`20B`5EEPM$L_ADDRS(r1),@B`5E16(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EEPM$B_NAMLNG(r1),@B`5E12(ap) X`20`20`20`20`20`20`20`20movc3`20`20`20@B`5E12(ap),B`5E12(r1),@B`5E4(r2) X`20`20`20`20`20`20`20`20movl`20`20`20`20#TRUE,@B`5E24(ap) X`20`20`20`20`20`20`20`20ret X300$:`20`20`20cmpb`20`20`20`20B`5EPRO$B_GSDTYP(r1),#GSD$C_PRO X`20`20`20`20`20`20`20`20bneq`20`20`20`20400$ X`20`20`20`20`20`20`20`20addl2`20`20`20#PRO$T_NAME,@B`5E20(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EPRO$B_NAMLNG(r1),r0 X`20`20`20`20`20`20`20`20addl2`20`20`20r0,@B`5E20(ap) X`20`20`20`20`20`20`20`20addl2`20`20`20r1,r0 X`20`20`20`20`20`20`20`20addl2`20`20`20#PRO$T_NAME,r0 X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EFML$B_MAXARGS(r0),r3 X`20`20`20`20`20`20`20`20addl2`20`20`20#2,@B`5E20(ap) X`20`20`20`20`20`20`20`20addl2`20`20`20#2,r0 X310$:`20`20`20tstl`20`20`20`20r3 X`20`20`20`20`20`20`20`20bleq`20`20`20`20320$ X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EARG$B_BYTECNT(r0),r4 X`20`20`20`20`20`20`20`20addl2`20`20`20#2,@B`5E20(ap) X`20`20`20`20`20`20`20`20addl2`20`20`20#2,r0 X`20`20`20`20`20`20`20`20addl2`20`20`20r4,@B`5E20(ap) X`20`20`20`20`20`20`20`20addl2`20`20`20r4,r0 X`20`20`20`20`20`20`20`20decl`20`20`20`20r3 X`20`20`20`20`20`20`20`20brb`20`20`20`20`20310$ X320$:`20`20`20movl`20`20`20`20B`5EPRO$L_ADDRS(r1),@B`5E16(ap) X`20`20`20`20`20`20`20`20cvtbl`20`20`20B`5EPRO$B_NAMLNG(r1),@B`5E12(ap) X`20`20`20`20`20`20`20`20movc3`20`20`20@B`5EPRO$T_NAME(ap),B`5E12(r1),@B`5E4(r2 V) X`20`20`20`20`20`20`20`20movl`20`20`20`20#TRUE,@B`5E24(ap) X`20`20`20`20`20`20`20`20ret X400$:`20`20`20addl2`20`20`20r0,@B`5E20(ap) X`20`20`20`20`20`20`20`20movl`20`20`20`20#FALSE,@B`5E24(ap) X`20`20`20`20`20`20`20`20ret X`20`20`20`20`20`20`20`20.end $ call unpack SYS2.MAR;1 320677519 "" $! $ create 'f' X$`20macro`20prof X$`20fortran/g_f/warn=decl`20profrep X$`20fortran/g_f/warn=decl`20utl X$`20fortran/g_f/warn=decl`20qs X$`20macro`20sys2 X$`20fortran/g_f/warn=decl`20get_byt X$`20link`20profrep+utl+qs+sys2+get_byt X$`20exit $ call unpack BUILD.COM;1 105873151 "" $! $ create 'f' XExample`20(with`20PASCAL`20program`20TEST): X X`20`20$`20PASCAL`20TEST X`20`20$`20LINK/DEBUG=disk:`5Bdir`5DPROF X`20`20$`20RUN`20TEST X`20`20$`20RUN`20PROFREP X`20`20TEST.PRF X`20`20TEST.REP X`20`20$TYPE`20TEST.REP X $ call unpack USAGE.TXT;1 2018779625 "" $ v=f$verify(v) $ exit