69 lines
2.0 KiB
QBasic
69 lines
2.0 KiB
QBasic
|
' *** CALL_EX.BAS
|
|||
|
'
|
|||
|
DEFINT A-Z
|
|||
|
CONST MAXFILES = 5, ARRAYDIM = MAXFILES + 1
|
|||
|
DIM File$(1 TO ARRAYDIM)
|
|||
|
' Separate command line into arguments.
|
|||
|
CALL Comline (Numargs,File$(),ARRAYDIM)
|
|||
|
IF Numargs < 3 OR Numargs >MAXFILES THEN
|
|||
|
' Too many or too few files.
|
|||
|
PRINT "Use more than 3 and fewer than";MAXFILES;"files"
|
|||
|
ELSE
|
|||
|
' Printout list of files.
|
|||
|
CALL Printout(File$(),Numargs)
|
|||
|
END IF
|
|||
|
END
|
|||
|
|
|||
|
SUB Comline(NumArgs,Args$(1),MaxArgs) STATIC
|
|||
|
' Subroutine to get command line and split into arguments.
|
|||
|
' Parameters: NumArgs : Number of args found.
|
|||
|
' Args$() : Array in which to return arguments.
|
|||
|
' MaxArgs : Maximum number of arguments
|
|||
|
CONST TRUE = -1, FALSE = 0
|
|||
|
NumArgs=0 : In=FALSE
|
|||
|
' Get the command line using the COMMAND$ function.
|
|||
|
Cl$ = COMMAND$
|
|||
|
L = LEN(Cl$)
|
|||
|
' Go through the command line a character at a time.
|
|||
|
FOR I = 1 TO L
|
|||
|
C$ = MID$(Cl$,I,1)
|
|||
|
'Test for a blank or tab.
|
|||
|
IF (C$ <> " " AND C$ <> CHR$(9)) THEN
|
|||
|
' Neither blank nor tab.
|
|||
|
' Test already inside an argument.
|
|||
|
IF NOT In THEN
|
|||
|
' You've found the start of a new argument.
|
|||
|
' Test for too many arguments.
|
|||
|
IF NumArgs=MaxArgs THEN EXIT FOR
|
|||
|
NumArgs=NumArgs+1
|
|||
|
In=TRUE
|
|||
|
END IF
|
|||
|
' Add the character to the current argument.
|
|||
|
Args$(NumArgs)=Args$(NumArgs)+C$
|
|||
|
ELSE
|
|||
|
' Found a blank or a tab.
|
|||
|
' Set "Not in an argument" flag to FALSE.
|
|||
|
In=FALSE
|
|||
|
END IF
|
|||
|
NEXT I
|
|||
|
END SUB
|
|||
|
|
|||
|
SUB Printout(F$(1),N) STATIC
|
|||
|
' Open target file.
|
|||
|
OPEN F$(N) FOR OUTPUT AS #3
|
|||
|
' Loop executes once for each file.
|
|||
|
' Copy the first N-1 files onto the Nth file.
|
|||
|
FOR File = 1 TO N - 1
|
|||
|
OPEN F$(File) FOR INPUT AS #1
|
|||
|
DO WHILE NOT EOF(1)
|
|||
|
'Read file.
|
|||
|
LINE INPUT #1, Temp$
|
|||
|
'Write data to target file.
|
|||
|
PRINT #3, Temp$
|
|||
|
PRINT Temp$
|
|||
|
LOOP
|
|||
|
CLOSE #1
|
|||
|
NEXT
|
|||
|
CLOSE
|
|||
|
END SUB
|
|||
|
|