MODULE›; D:DIR.ACT BY BOB TURNER 04/10/84›; AN EXAMPLE IN THE USE OF POINTERS›; AND ARRAY MANIPULATION.›BYTE POINTER PTR›;›PROC FORMNAME(BYTE ARRAY DPTR,BUF)›BYTE POINTER BPTR›BYTE J›J=3 ; INIT INPUT BUFFER INDEX›DPTR(0)=2 ; INIT STRING COUNT›DPTR(1)='D : DPTR(2)=':›BPTR=DPTR+3 ; POINT PAST :›WHILE BUF(J) # $20 › DO›   BPTR^=BUF(J) ; MOVE IN NEXT BYTE›   BPTR==+1 ; BUMP POINTER›   DPTR(0)==+1 ; UP STRING COUNT›   J==+1 ; BUMP INDEX TO INPUT BUFFER›   ;   *** DONT EXCEED 8 CHARS IN PRIMARY NAME›   IF J=11 THEN EXIT FI› OD››; DEBLANK INPUT BUFFER›WHILE BUF(J) = $20› DO›  J==+1›  IF J = 14 THEN RETURN FI; NO EXT!› OD›BPTR^='. : BPTR==+1 : DPTR(0)==+1›; FILL IN EXT›WHILE BUF(J) # $20› DO›  BPTR^=BUF(J) : J==+1›  BPTR==+1 : DPTR(0)==+1› OD››RETURN››PROC MAIN()››BYTE I=[0]›BYTE ARRAY BUF(19)›BYTE ARRAY DIR_STRING(960)›CARD ARRAY DVECT(64) ; DOPE VECTOR››PTR = DIR_STRING ; INIT POINTER›OPEN(1,"D:*.*",6,0)›INPUTSD(1,BUF) ; GET FIRST FILE›; DONT FORMAT # OF SECTORS FREE MSG  ›WHILE BUF(2) = $20 ; A GOOD A STOPPER AS ANY OTHER›  DO›    DVECT(I) = PTR ; KEEP A DOPE VECTOR›    PRINT(BUF) : PRINT("-->")›    FORMNAME(PTR,BUF)›    PRINTE(PTR) ; PRINT FILE NAME FORMED›    PTR==+PTR(0)+1 ; POINT TO NEXT SUBSTRING›    INPUTSD(1,BUF)›    I==+1›  OD›DVECT(I)=0; MARK LAST FILE FOUND›CLOSE(1); CLOSE DIR›; PRINT OUT USING CARD ARRAY AS POINTERS›PRINTE("FILES FROM TABLE")›I = 0›WHILE DVECT(I)#0›  DO›    PRINTF("%I) %S%E",I,DVECT(I))›    I==+1›  OD››RETURN››