Students must start practicing the questions from CBSE Sample Papers for Class 12 Computer Science with Solutions Set 7 are designed as per the revised syllabus.

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Time Allowed: 3 hours
Maximum Marks: 70

General Instructions:

  • This question paper contains five sections, Section A to E.
  • All questions are compulsory.
  • Section A have 18 questions carrying 01 mark each.
  • Section B has 07 Very Short Answer type questions carrying 02 marks each.
  • Section C has 05 Short Answer type questions carrying 03 marks each.
  • Section D has 03 Long Answer type questions carrying 05 marks each.
  • Section E has 02 questions carrying 04 marks each. One internal choice is given in Q35 against part c only.
  • All programming questions are to be answered using Python Language only.

Section – A

Question 1.
State True or False. [1]
/* symbol is used in Python for single line comment.
Answer:
False

Explanation:
# is used for single line comment in Python.

Question 2.
An error in a program is termed as: [1]
(A) Bug
(B) Debug
(C) Both (A) and (B)
(D) None of these
Answer:
Option (A) is correct.

Explanation:
There can be error in a program. These errors or bugs prevent a program from being compiled or to give correct output.

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 3.
Suppose a tuple T is declared as
T = (10,12,43,39), which of the following is incorrect? [1]
(A) print(T[1])
(B) T[2] = -29
(C) print(max(T))
(D) print(len(T))
Answer:
Option (B) is correct.
Explanation: A tuple is a collection of Python objects separated by comma (,). Tuples are immutable by design which means they cannot be changed after creation. Tuple holds a sequence of heterogenous elements

Commonly Made Error
Students don’t know which data types in python are mutable and which are immutable.

Answering Tip
Remember all datatypes except lists and dictionaries in Python are immutable

Question 4.
What will be the output of the following code? print (type(type(int))) [1]
(A) type’int’
(B) <class’type’>
(C) Error
(D) < class’int’>
Answer:
Option (B) is correct.

Explanation:
type () method returns class type of the argument (object) passed as parameter. This function is mostly used for debugging purpose.

Question 5.
Which of the following is invalid? (A) _a = 1 (C) str =16. Rohan writes a program of printing “I am new programming developer” but he forget to close the bracket of print () statement. What type of error is this? [1]
(A) Syntax error
(B) Logical error
(C) Runtime error
(D) None of the above
Answer:
Option (D) is correct.

Explanation:
In given options, all are valid variable_ names. Variable is a container object stores a meaningful value that can be used throughout the program.

Question 6.
Roban writes a program of printing ‘1 am new programming developer” but he forget to dose the bracket of print () statement. What type of error is this?
(A) Syntax error
(B) Logical error
(C) Runtime error
(D) None of the above
Answer:
Option (A) is correct.

Explanation:
The interpreter interprets the statements only if it is syntactically (as per the rules of Python) correct

Question 7.
Fill in the blank
The statement terminates the execution of the whole loop. [1]
(A) continue
(B) exit
(C) jump
(D) break
Answer:
Option (D) is correct.

Explanation:
The break statement alters the normal flow of execution as it terminates the current loop and resumes execution of the statement following that loop

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 8.
Which method is used to retrieve the executed database function or stored procedure result in Python? [1]
(A) cursor.stored_results()
(B) cursor.get_results()
(C) cursor.fetch_results()
(D) cursor.show_results()
Answer:
Option (A) is correct.

Explanation:
You can fetch the results using the stored_results() method of the cursor object. The stored_results() returns an iterator which can be used to iterate over the rows in the result set

Question 9.
Which of the following option is the correct Python statement to read and display the first 10 characters of a text file “Notes.txt”? [1]
(A) F = open(‘Notes.txt’); print(F.load(10))
(B) F = open(‘Notes.txt’); print(F.dump(10))
(C) F = open(‘Notes.txt’); print(F.read(10))
(D) F = open(‘Notes.txt’); print(F.write(10))
Answer:
Option (C) is correct.

Explanation:
read() method in Python is used to read at most n bytes from the file associated with the given file descriptor. If the end of the file has been reached while reading bytes from the given file descriptor, os. read() method will return an empty bytes object for all bytes left to be read.

Commonly Made Error
Students do not the usage of various file handling functions and use these functions interchangeably

Answering Tip
Learn the proper usage of all the file handling functions.

Question 10.
Fill in the blank
The design of the database is known as: [1]
(A) attribute
(B) database schema
(C) obstruction
(D) database oriented
Answer:
Option (B) is correct.

Explanation:
Database schema is the logical representation of data which shows how the data is stored logically in the entire database.

Question 11.
Which colour will be replaced with yellow? colour = [“red”, “green”, “blue”] colour[1] = “yellow” print(colour) [1]
(A) red
(B) green
(C) blue
(D) none, yellow will be added to the list
Answer:
Option (B) is correct.
Explanation:
In the existing list, colour[1] belongs to green. So, after colour[1] = “yellow”, the new list will be colour = [“red”, “yellow”, “blue.]

Commonly Made Error
Students begin indexing from 1 and in case of negative indexing they start counting from 0.

Answering Tip
Remember indexing starts from 0 and negative indexing starts from -1.

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 12.
Which of the following is/are DML commands? [1]
(A) Insert
(B) Delete
(C) Update
(D) All of these
Answer:
Option (D) is correct.
Explanation: DML (Data Manipulation Language) commands that allow you to perform data manipulation e.g. retrieval, insertion, deletion and modification of data stored in database.

Question 13.
Fill in the blank
___________ is a networking device that forwards the data pickets between computer networks. [1]
(A) repeater
(B) hub
(C) switch
(D) router
Answer:
Option (D) is correct.

Question 14.
Which of these is the correct code for creating a list of names? [1]
(A) nameList = John, Harry, Jesse, John, Harry, Harry
(B) nameList = (“John”, “Harry”, “Jesse”, “John”, “Harry”, “Harry”)
(C) nameList = [“John”, “Harry”, “Jesse”, “John”, “Harry”, “Harry”]
(D) nameList = [John, Harry, Jesse, John, Harry, Harry]
Answer:
Option (C) is correct.

Explanation:
In creating a list, brackets used are [ ], not() or { }.

Question 15.
Which of the following types of table constraints will prevent the entry of duplicate rows? [1]
(A) Unique
(B) Distinct
(C) Primary Key
(D) NULL
Answer:
Option (A) is correct.

Question 16.
What will be the result of ‘cursor.close()’? [1]
(A) Close the cursor
(B) Reset all results
(C) Deletes all references to the connection
(D) All of these
Answer:
Option (D) is correct.

Explanation:
close() is used when you are done using a cursor. This method closes the cursor, resets all results, and ensures that the cursor object has no reference to its original connection object.

Assertion and Reason:
In the following questions, A statement of Assertion (A) is followed by a statement of Reason (R). Mark the correct choice as.
(A) Both A and R are true and R is the correct explanation for A.
(B) Both A and R are true and R is not correct explanation for A.
(C) A is true but R is false.
(D) A is false but R is true.

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 17.
Assertion (A): The order of execution of the statements in a program is known as flow of control.
Reason (R): The flow of control can be implemented using control structures. [1]
Answer:
Option (B) is correct.

Explanation:
The order of execution of the statements in a program is known as flow of control. The flow of control can be implemented using control structures. Python supports two types of control structures—selection and repetition.

Commonly Made Error:
Students don’t know the meaning of flow of control

Answering Tip:
Selection construct is carried out using if and repetition using for and while.

Question 18.
Assertion (A): Modules provide reusability of code.
Reason (R): We can define our most used functions in a module and import it, instead of copying their definitions into different programs. [1]
Answer:
Option (A) is correct.

Explanation:
Modules refer to a file containing Python statements and definitions.
A file containing Python code, for example: example.py, is called a module, and its module name would be example.
We use the import keyword to use the module.

Section – B

Question 19.
Find the errors
t1= (10,20,30,40,50,60,70,80)
t2=(90,100,110,120)
t3=t1*t2
Print (t3 [0 :12 :3] ) [2]
Answer:
(1) ti*t2 cant multiply
(2) P is in uppercase in print command

Question 20.
Name the protocol
(i) Used to transfer voice using packet switched network.
(ii) Used for chatting between two groups or between two individuals. [2]
OR
Which type of network out of LAN, PAN and MAN is formed
(i) when you connect two mobiles using Bluetooth to transfer a video?
(ii) Rahul has to share the data among various computers of his two office branches situated in the same city.
Answer:
(i) VoIP [Voice over Internet Protocol]
(ii) IRC [Internet Relay chat]
OR
(i) PAN (Personal Area Network)
(ii) MAN (Metropolitan Area Network)

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 21.
(a) Give the output of the following code:
def Hello(Sum):
for i in Sum:
print(i)
S=(“Hii”, “Hello”, “Namaste”)
Hello(S)
(b) What will be the output of the following code?
x = “abcdef”
i = “i”
while i in x:
print (i, end=” “) [2]
Answer:
(a) Output
Hii
Hello
Namaste

(b) There is no output because variable i is equal to string value which cannot be used in iteration.

Question 22.
What is table? Also, define Candidate Key. [2]
Answer:
A table consists of a number of rows and columns. Each record contains values for the attributes. A candidate key is the smallest subset of the super key for which there does not exist a proper subset that is super key. In other words, all attribute combinations inside a relation that can serve as primary key are candidate keys.

Question 23.
(a) Define the following terms:
www, web hosting
(b) Give one advantage and one disadvantage of star topology. [2]
Answer:
(a) www: It is a set of protocols that allow you to access any document on the internet through the naming systems based on URLs
Web hosting: It is a service that allows organizations and individuals to post a website or web page onto the server, which can be viewed by everyone on the Internet.

(b) Advantages:

  • Ease of service
  • Centralized control
  • Easy to diagnose faults
  • One device per connection

Disadvantages:

  • Long cable length
  • Difficult to expand
  • Central node dependency

NOTE: Write any one advantage and one disadvantage

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 24.
What is the output of the following Python statements? [2]
b = 1
for a in range(1, 10, 2):
b + = a + 2
print(b)
OR
Find the output of the following code:
Name=”PythoN3.1″
R=” ”
for x in range(len(Name)):
if Name [x] .isupperO :
R=R+Name[x].lower()
elif Name[x].islower!):
R=R+Name[x] .upper ()
elif Name [x] .isdigitO :
R=R+Name[x-1]
else:
R=R+”#”
print(R)
Answer:
36
OR
pYTHOnN#

Question 25.
Give differences between an equi-join and a natural join. [2]
OR
Which declaration of datatype doesn’t use the same number of bytes for every record and consumption of bytes depends on the input data? Which declaration of datatype will consume the same number of bytes as declared and is right padded”?
Answer:
Equi- join

  • The join which Columns from two table are compared for equality
  • Duplicate columns are show

Natural join

  • The join which only of the identical columns existing in both table is present
  • No duplicate of columns

OR

Varchar AND Char

Section – C

Question 26.
(a) Consider the table STUDENT given below
Table: STUDENT
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 1
What will be the output of the following command?
SELECT NAME,GENDER FROM STUDENT WHERE CITY=”Delhi”;

(b) Write the outputs of the SQL queries (i) to (iv) based on the relations Teacher and Posting given below:
Table: Teacher
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 2

Table: Posting
P_ID Department Place
1 History Agra
2 Mathematics Raipur
3 Computer Science Delhi

(i) SELECT Department, count(*) FROM Teacher GROUP BY Department;
(ii) SELECT Max(Date_of_Join),Min(Date_of_Join) FROM Teacher;
(iii) SELECT Teacher. Name, Teacher. Department, Posting.Place FROM Teacher, Posting WHERE Teacher. Department = Posting.Department AND Posing. Place=”Delhi”;
(iv) SELECT NAME,AGE FROM TEACHER WHERE DATE_OFJOIN >1/1/2011
Answer:
(a)

NAME GENDER
Sonal F
Sohan M

(b) OUTPUT
(i)

Department Count(*)
History 3
Computer Sc 2
Mathematics 3

(ii) Max – 31/07/2018 or 2018-07-31 Min – 05/09/2007 or 2007-09-05

(iii)

Name Department Place
Jugal Computer Sc Delhi
Shiv Om Computer Sc Delhi

(iv)

Name Age
Jugal 34
Sandeep 32
Sangeeta 35
Shiv Om 44
Shalakha 33

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 27.
Write a function countmy( )in Python to read the text file “DATA.TXT” and count the number of times “my” occurs in the file.
For example if the file “DATA.TXT” contains:
“This is my website. I have displayed my preferences in the CHOICE section.”
The countmy() function should display the output as:
“my occurs 2 times”. [3]
OR
Write a function in Python to count the number of blank spaces in a text file named “STORY.txt”.
Answer:
def countmy():
f= open(“DATA.TXT”,”r”)
count =0 x=f.read()
word= x.split()
for i in word:
if i == “my”:
count=count+1
print (“my occurs”, count, “times”)

OR

def countblankspace(): fname = “story.txt” count=0
with open(fname, ‘r’) as f:
l=f.readline()
for line in l:
for word in line:
for char in word:
if char.isspace() :
count=count + 1
print (“No. of spaces =”,count)
f.close ()

Question 28.
(a) Write Output for SQL queries (i) to (iv) on the basis of tables given below:
Table: PRODUCTS
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 3

Table: SUPPLIERS

Supcode SName City
S01 GET ALL INC KOLKATA
S03 EASY MARKET CORP DELHI
S02 DIGI BUSY GROUP CHENNAI

(i) SELECT ‘FROM PRODUCTS ORDER BY PNAME ASC;
(ii) SELECT PNAME FROM PRODUCTS WHERE PRICE = 12000;
(iii) SELECT DISTINCT SUPCODE FROM PRODUCTS;
(iv) SELECT MAX (PRICE), MIN (PRICE) FROM PRODUCTS; [3]

(b) A table, ITEM has been created in a database with the following field:
ITEMCODE, ITEMNAME, QTY, PRICE
Give the SQL command to add a new field, DISCOUNT (of type integer) to the ITEM table. [3]
Answer:
(i)
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 4

(ii) DIGITAL CAMERA 14X 12000
CAR GPS SYSTEM 12000

(iii) S01
502
503

(iv) 28000 1100

(b) ALTER TABLE ITEM
ADD (Discount INT);

Question 29.
Write definition of a method OddSum(NUMBERS) to add those values in the list of NUMBERS, which are odd. [3]
Answer:

def OddSum (NUMBERS):
sum = 0
for i in range (len (NUMBERS)):
if NUMBERS [i] % 2 ! = 0:
sum = sum + NUMBERS [i]
print (sum)

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 30.
Alam has a list containing 10 integers. You need to help him create a program with separate user defined functions to perform the following operations based on this list. [3]
(i) Traverse the content of the list and push the even numbers into a stack.
(ii) Pop and display the content of the stack.
For Example:
If the sample Content of the list is as follows:
N=[12,13,34,56,21,79,98,22, 35,38]
Sample Output of the code should be:
38 22 98 56 34 12 [3]
OR
Write a program in Python to implement a stack to store student details(regno, studname). Write functions
(i) push() to + elements to the stack.
(ii) display() to display the items of the stack
# fresh
Answer:
N=[12, 13, 34, 56, 21, 79, 98, 22,35, 38]

def PUSH(S,N):
S.append(N)
def POP(S):
if S!=[]:
return S.pop()
else:
return None
ST=[]
for k in N:
if k%2==0:
PUSH(ST,k)
while True:
if ST!=[]:
print(POP(ST),end=" ")
else:
break

OR

def isEmpty(stk):
if stk==[]:
return True
else:
return False
def Push(stk,stud):
stk.append(stud)
top=len(stk)-1
def display(stk):
if isEmpty(stk):
print ("Stack is Empty")
else:
top=len(stk)-1
print(stk[top],"<---- TOP")
for a in range (top-1,-1,-1):
print(stk[a])

Section – D

Question 31.
ABC is professional consultancy company. The company is planning to set up their new offices in India with its hub at Bengaluru. As a network adviser, you have to understand their requirements and suggest them the best available solutions. Their queries are mentioned as (i) to (v) below:
Expected number of computers to be installed in each block:
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 5
Block to Block Distances (mt Mtr)

Block (From) Block (To) Distance
Human Resource Conference 110
Human Resource Finance 40
Conference Finance 80

Expected number of computers to be installed in each block:

Block Computer
Human Resource 25
Finance 120
Conference 90

(i) What will be the most appropriate block, where ABC should plan to install their server?

(ii) Draw a block diagram showing cable layout to connect all the buildings in the most appropriate manner for efficient communication.

(iii) What will be the best possible connectivity out of the following, you will suggest to connect the new setup of offices in Chennai with its London based office.

  • Satellite link
  • Infrared
  • Ethernet cable

(iv) Which of the following device will be suggested by you to connect each computer in each of the buildings?

  • Switch
  • Modem
  • Gateway

(v) The company is planning to link its blocks situated in various part of the same city. Which type of network out of LAN, WAN, MAN will be formed? Justify. [5]
Answer:
(i) Finance block because it has maximum number of computers.
(ii)
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 6
(iii) Satellite link
(iv) Switch
(v) MAN (Metropolitan Area Network) as this network can be carried out in a city network.

Question 32.
(a) Rewrite the following code in python after removing all syntax error(s). Underline each correction done in the code
30=To
for K in range(0,To)
IF k%4 = = 0 :
print (K*4)
Else:
print (K+3)
(b) Given a database Inventory, userid- store manager password – welcometostorel23
Write Python code to connect to the above database. [5]
OR
Write the output from the following code:
T1 =(10,20,30,40,50)
T2 =(10,20,30,40,50)
T3 =(100,200,300)
cmp(T1,T2)
cmp(T2,T3)
cmp(T3,T1)

(b) Consider the tables Product and Client with structures as follows:

Product Client
P_ID C_ID
ProductName CName
Manufacturer CCity
Price CProd

Write Python to display the details of those client whose city is Delhi.
Answer:
(a)
To=30
for K in range(0,To):
if k%4==0:
print (K*4)
else:
print (K+3)

(b)
import MySQLdb
try:
db=MySQLdb.connect(‘localhost’,’storema nager’,’welcometostore123’,’Inventory’)
print (’’connected to the database”)
except:
print (“unable to connect to the database”)

OR

(a) 0
-1
1

(b) import MySQLdb
db=MySQLdb.connect(‘localhost’, ‘Admin’, ‘Admin@pwd’, ‘cosmetics’)
cursor=db.cursor()
sql=”””Select*from Client where city=%s”””
city_query=(‘Delhi’)
try:
cursor.execute(sql, city_query)
results = cursor.fetchall()
print (“Client ID, Name, City, Product”)
for row in results:
C_ID = row[0]
CName = row[1]
CCity = row[2]
CProd = row[3]
prints (“%s %s %s %s” % \ (C_ID, CName, CCity, CProd)
except:
print (“Error: unable to fetch data”)
cursor.close()
db.close()

Commonly Made Error
Students do not use try and except blocks

Answering Tip
Try and except blocks must be used to avoid any exceptions that may arise while handling files.

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 33.
How is r+ file mode different from rb+ mode?
Write a Python program to add a new student record in an existing file new.txt at 2nd position. Details of the student ( name and regno) are to be accepted from the user. [5]
OR
Which file mode places file cursor at the end of the file?
Write a Python program to add a new items record in an existing file newitem.txt at 5th position. Details of the items(itemcode and price) are to be accepted from the user.
Answer:
r+ is used to read/write a normal ASCII or Unicode file whereas rb+ mode is used to read/write a binary file.

PROGRAM

import os
infile = open("new.txt","r")
outfile=open ( "temp . txt" , "w" )
Nregno= input("Enter Registration number:")
Nname=input("Enter Name")
Nrec= Negno+","+Nname+'\n'
count=0
rec="" while rec:
rec = infile.readline()
count = count +1
if count == 2:
outfile.write(Nrec)
outfile.write(rec)
else :
outfile.write(rec)
infile . close ()
outfile . close ()
os.remove("new.txt")
os.rename("temp.txt","new.txt")
print(" 1 Record added")

Commonly Made Error
Student forget to delete and rename the files.

Answering Tip
First close both the files and before renaming delete the original file.

OR

A and a+ mode places the cursor at the end of the file.

import os
infile = open("newitem.txt","r")
outfile=open ( "temp . txt" , "w" )
Nicode= input("Enter Item code:")
Nprice=input("Enter Price")
Nrec= Nicode+","+Nprice+'\n'
count=0
rec=""
while rec:
rec = infile.readline()
count = count +1
if count == 5:
outfile.write(Nrec)
outfile.write(rec) el se :
outfile.write(rec)
infile . close ()
outfile . close ()
os.remove("new.txt")
os.rename("temp.txt","newitem.txt")
print(" 1 Record added")

Commonly Made Error
File modes and their correct usage is not known to the students :

Answering Tip
Students should try some practical questions to understand the difference clearly

Section – E

Question 34.
Consider the table, MOVIEDETAILS given below:
Table: MOVIEDETAILS
CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions 7
(i) Identify the degree and cardinality of the table. [1]
(ii) Identify the candidate key(s) from the table MOVIEDETAILS. [1]
(iii) Which field should be made the primary key? Justify your answer. [2]
OR (Option for part iii only)
(iii) Consider the table SCHEDULE given below:
Answer:

Table: SCHEDULE

Slotid Movieid Timeslot
S001 M010 10 AM to 12 M
S002 M020 2 PM to 8 PM
S003 M010 6 PM to 8 PM
S004 M011 9 PM to 11 PM

Identify the primary key and foreign key from the table if both the above tables belong to the same database.
Answer:
(i) Degree: 5
Cardinality: 6 (1 mark for correct degree and cardinality)
(ii) MOVIEID and TITLE (1 mark for correct answer)
(iii) MOVIEID should be made the primary key as it unique identifies each record of the table
OR
(iii) Foreign key —MOVIEID Primary key — SLOTID

CBSE Sample Papers for Class 12 Computer Science Set 7 with Solutions

Question 35.
Radha Shah is a programmer, who has recently been given a task to write a python code to perform the following CSV file operations with the help of two user defined functions/modules:
(a) CSVOpen(): to create a CSV file called BOOKS.CSV in append mode containing information of books – Title, Author and Price.
(b) CSVRead(): to display the records from the CSV file called BOOKS.CSV where the field title starts with ‘R’.
She has succeeded in writing partial code and has missed out certain statements, so she has left certain queries in comment lines.

import csv
def CSVOpen( ) :
with open (‘books.csv’,’ _____ ‘, newline=’ ‘) as csvf:
CW = ___________ #Statement-1
___________ #Statement-2
cw.writerow (['Rapunzel', 'Jack', 300])
cw.writerow (['Barbie', 'Doll', 900])
cw.writerow (['Johnny', 'Jane', 280])
def CSVRead ( ) :
try:
with open ('books.csv', 'r') as csvf:
cr= _____ #Statement-3
for r in cr:
if _____ #Statement-4
print (r)
except:
print ('File Not Found')
CSVOpen ( )
CSVRead ( )

You as an expert of Python have to provide the missing statements and other related queries based on the following code of Radha.
(i) Which statement will be used to create a csv writer object in Statement 1. [1]
(ii) Fill in the blank in Statement 2 to write the names of the column headings in the CSV file, BOOKS.CSV. [1]
(iii) Which statement will be used to read a csv file in Statement 3 and Fill in the appropriate statement to check the field Title starting with ‘R’ for Statement 4. [2]
Answer:
(i) csv.writer(csvf)
(ii) cw.writerow( [‘Title’, ‘Author’, ‘Price’])
cw.writerows(‘Title’, ‘Author^ ‘Price’)
(iii) csv.reader(csvf) and
r[0][0] = =’R’ FILE HANDLING