=======================================
=                                     =
=      HP 2000 PART 4 (FILES)         =
=                                     =
=             CAPTURED BY             =
=                                     =
=      BLITZIOD ?? & GALACTUS **      =
=                                     =
=                 of                  =
=                                     =
=       THE ELITE HACKERS GUILD       =
=                                     =
=======================================


* FILES *



BASIC FORMATTED FILES ARE ESSENTIALLY THE SAME AS
DATA STATEMENTS, THEY BOTH HAVE POINTERS THAT MOVE ALONG THE DATA
HERE IS AN EXAMPLE OF A PROGRAM USING THE DATA STATEMENT    :

10 READ X
20 PRINT X
30 DATA 1,2,3,4,5,6,7,8,9,10
40 GOTO 10
50 END


WHEN THIS PROGRAM IS RUN THE DATA IS READ IN LINE 10
FROM THE DATA STATEMENT IN LINE 30.
AFTER THE '1' IS READ FROM THE DATA STATEMENT THE POINTER IS
MOVED TO THE '2' AND SO ON.  WHEN THE FINAL PIECE OF DATA IS READ
AND THE POINTER IS MOVED BEYOND THE '10' THEN YOU WILL GET THE
ERROR MESSAGE:      OUT OF DATA IN LINE 10       
THIS IS ESSENTIALLY THE WAY FILES WORK.
BUT FILES HAVE MANY MORE CAPABILITIES THAN DO DATA STATEMENTS


LET'S LEARN HOW TO CREATE A FILE, OK?


TO CREATE A FILE ALL ONE MUST DO IS TYPE IN CRE- THEN THE
NAME OF THE FILE, AND HOW LONG IT MUST BE.  FOR EXAMPLE IF I WANTED
TO CREATE A FILE NAMED 'DAVID' THAT IS 5 RECORDS LONG I WOULD TYPE IN
CRE-DAVID,5
THEN HIT 'RETURN'

WHENEVER YOU CREATE A FILE THE COMPUTER RESERVES THE NUMBER OF
RECORDS YOU CREATED IT ON THE DISC.  SO IF YOU CREATE A FILE THAT
IS 50 RECORDS LONG, YOU HAVE USED 50 RECORDS OF DISC SPACE, WHETHER
YOU USE THE WHOLE FILE OR NOT.

NOW I WILL SHOW YOU A PROGRAM THAT WILL PRINT ON YOUR FILE.



 5 DIM A$(20), B$(20)
10 FILES FIL1
20 PRINT 'NAME';
30 INPUT A$
40 IF END#1 THEN 85
50 READ#1,1
60 READ#1;B$
70 GOTO 60
85 IF END#1 THEN 110
90 PRINT#1;A$,END
100 STOP
110 PRINT'FILE FULL'
120 END




BY THIS TIME YOU ARE WONDERING WHAT THAT MESS IS, RIGHT ?
HERE IS AN EXPLANATION  


STATEMENT #                       MEANING
10          OPENS THE FILE THAT IS TO BE USED, IN THIS CASE THE NAME OF
            THE FILE IS 'FIL1'.  THIS STATEMENT IS TELLING THE COMPUTER
            WHAT FILE WE WANT TO USE FOR THIS PROGRAM
            FIL1 IS REFERRED TO AS #1 AS SEEN IN LINES 40,50 & 60
            IF MORE THAN ONE FILE WAS USED LINE 10 WOULD LOOK LIKE
            THIS  FILES FIL1,FIL2.  THEN FIL2 WOULD BE REFERRED
            TO AS #2.  UP TO 16 FILES CAN BE USED IN ONE PROGRAM
30          INPUT NEW NAME TO BE PRINTED ON FILE.
40          THIS STATEMENT 'IF END' SETS UP THE IF END 
            CONDITION.  THIS MEANS THAT WHEN THE FILE PIONTER GETS
            TO THE END OF  DATA IN THAT FILE THEN GOTO 85
50          THIS MEANS TO READ THE FIRST RECORD AND THE
            FIRST ITEM OF THE FILE, IN OTHER WORDS THIS
            THIS SETS THE FILE POINTER BACK TO THE BEGINNING OF THE
            DATA.
            BY USING THIS STATEMENT YOU CAN BE ASSURED OF STARTING
            AT THE BEGINNING OF THE DATA IN THAT FILE
60          READS DATA FROM FILE#1, SOMEWHAT LIKE THE 'READ' USED
            WITH DATA STATEMENTS.
85          SETS UP ANOTHER IF END CONDITION TO CHECK FOR THE END OF
            FILE.  IF ANOTHER EOF MARKER IS ECOUNTERED THEN GOTO
            LINE 110.
            END-OF-FILE MARKERS ARE DEFINED MORE PRECISELY LATER.
90          THIS STATEMENT PRINTS THE NEW NAME (A$) ON THE FILE,
            THEN PRINTS AN END OF FILE MARKER ON THE FILE.
            THE END OF FILE MARKER ENABLES THE COMPUTER TO TELL
            THROUGH THE READ STATEMENT (LINE 60) WHEN THE END OF
            DATA IS REACHED



HERE IS A FLOW CHART OF THAT PROGRAM:

1.  INPUT NEW NAME -----------2.  READ DATA FROM FILE

3.  IF END OF FILE #1 THEN 4 -----GO BACK TO 2.
                                 !
                    4.  IF END#1 THEN 7
                                 !
5.  TRY TO PRINT NEW NAME ON FILE, IF SUCCESSFUL (MEANING FILE IS
    NOT FULL) THEN 6.  IF UNSECCESSFUL (MEANING FILE IS FULL) THEN 7.
                                 !                            !
                                                              !
                                 !            7.  PRINT'FILE FULL'
                             6.  STOP                         !
                                                          8. END


OK, LET'S MOVE ON TO GET A LISTING OF YOUR FILE

05 DIM A$(20)
10 FILES FIL1
20 IF END#1 THEN 70
30 READ#1,1
40 READ#1;A$
50 PRINT A$
60 GOTO 40
70 END


THIS IS A RATHER SIMPLE PROGRAM, IT GOES LIKE THIS;
YOU SET UP THE IF END CONDITION, THEN READ STARTING AT THE
BEGINNING OF THE FILE.  READ THROUGH THE FILE AND PRINT
EACH SEPARATE PIECE OF DATA (LINES 40 & 50). WHEN ALL THE
DATA HAS BEEN READ THROUGH, IT FALLS THROUGH TO LINE 70, BY
THE CONDITION SET UP IN LINE #20 AND AT THIS POINT
EXECUTION IS TERMINATED.



*  END OF FILE DISCUSSION  *



HERE IS SOME ELLABORATION ON WHAT YOU HAVE LEARNED SO FAR
ABOUT BASIC FORMATTED FILES.

 THE EOF MARKER IS WHAT THE IF END CONDITION IS USED 
WITH.  THE EOF MARKER DESIGNATES THAT THE END OF DATA HAS BEEN REACHED.
AS MORE DATA IS PUT INTO A FILE.