 بسم اللہ الرحمن الرحيم آج ہم موڈیول 34 دیسکس کریں گے. موڈیول 34 ہے ریندم رکارڈ اپڑیٹس using فائل پویٹر. اس کے اندر ہم ایک اگزمپل لے کے چلیں گے. اس اگزمپل کے اندر ہم یہ کریں گے کہ ایک فرسلی فائل کریٹ کریں گے. اس کے اندر ہم ایک کپیسٹی سپیسفائے کریں گے کہ جیس کی تنی کپیسٹی ہے اس کے اندر اس کے اندر اتنے رکارڈز آسکتے ہیں. ایک رکارڈ کا فکس سائیز ہے وہ سائیز ہم نے ڈفائن کیا ہوگا. اور شروع میں اس فائل کا ایک ہیڈر ہوگا. ہیڈر کے اندر فائل سے ڈیلٹیڈ انفرمیشن ہوگی کہ اس فائل کے اندر کتنے رکارڈز ہیں کتنے رکارڈز موڈیفائے ہوئے ہیں. یہ انفرمیشن ہیڈر کے اندر پڑی ہوگی اور باقی سبسوکنٹ جتنے بھی رکارڈز ہوں گے وہ اس ہیڈر کے بعد پڑے ہوں گے اور ہر رکارڈ کے اندر ڈیفرینٹ انفرمیشن ہو سکتی ہے اور اس فائل کے اندر آپ جتنے مرزیر رکارڈ جائے سیف کر سکتے ہیں. اور دوسرا اس پکرام کا بڑا فیچر یہاں کہ یہ پکرام جو ہے رندم لی کسی بھی جو بھی آپ رکارڈ سپیسفائے کریں گے اس رکارڈ کو رندم لی جاکے اقصص کر سکتا ہے اس پورے رکارڈ کو ریڈ کر کے لائے گا اور چائیں تو آپ اس کو پھر موڈفائے بھی کر سکتے ہیں. ابھی جتنی بھی ہم نے فائل سے رلیٹڈ ایپیائیز دیکھی ہیں ریڈ فائل رائیڈ فائل کریڈ فائل اور سٹ فائل پوائنٹر ای x ان ایپیائیز کو use کرتے وے ہم یہ تمام operations جویں وہ پرفام کر سکتے ہیں اس پکرام کی طرف چلتے ہیں یہاں پہاں آپ دیکھیں کہ ہم نے یہاں پہاں رکارڈ دفائن کیا وے اس رکارڈ کے اندر نمبر of field ہے. system time, 3 field system time کیا اس کا ہم نے record creation time, record last reference time, record update time یہ ساری information record کے اندر رکھی بھی ہے اور ایک اور heder کا سٹرکچر ہم نے دفائن کیا اس کے اندر دو field ہیں ایک num records اور non empty records. Non empty records ہم یہ بتائے گا کتنے non empty ہیں ہو سکتا آپ نے 100 records بنایا ہوں لیکن ان میں سے ہو سکتا صرف دو کے اندر information ہوں تو ہم یہ بتائے گا جی دو صرف records اسے ہیں جس کے اندر information ہے اور num records total number of records سے آپ نے 100 بنائے گا تو آپ کو یہ بتائے گا کہ آپ کی فائل کے اندر total کتنے records ہیں اب یہ آپ اپنا main program دیکھ سکتے ہیں اس کے اندر importantly آپ یہ اپن overlapped structure دیکھیں دو overlap structure ہے ایک o v اور ایک o v zero ابھی فلحال دونوں کو zero کے ساتھ انیشلائس کیا heder کو بھی zero کے ساتھ انیشلائس کیا یہاں پہ ہم ہر جگہ ایرر جو ہے اس کو چیک کریں یہاں پہ ہم argument list ہم نے چیک کیا اگر two سے کام میں argument list اس کس کے اندر error report ہو جائے گا اور ان کس فائل آپ کریٹ کرتے ہیں جنارک read اور جنارک write کے لیے اور random access کے لیے آپ فائل کریٹ کرتے ہیں اگر نہیں کریٹ ہو پاتی تو again یہاں پہ ایرر آ جائے گا اگر create ہو جاتی ہے تو آپ یہاں پہ argument count چیک کرتے ہیں اگر argument count is greater than three تو یہ نام records کے اندر argument two place کر دیتے ہیں یعنی کہ یہ وہاں argument two جو ہے یہ آپ کو number of records بتا رہا ہے کہ کتنے records اور پھر write فائل write فائل کے اندر error ہے تو report error ہو گا اور write فائل سے ہم کیا write کرے ہیں ابھی heder write کرے ہیں پھر یہاں پہ current pointer کے اندر quad part کے اندر آپ size of record record کا size رکھ رہے ہیں multiplied by argument two number of records جتنے records ہیں اس کے ساتھ multiply کرے ہیں plus the size of header اتنے bytes جو ہے آپ نے اس کے اندر reserve کر لیے اور اس فائل pointer کی position کیا پر آپ لے کے جاتے ہیں فائل کو with respect to begin of file اور وہاں پہ یہ آپ کا end of file setup کرے ہیں فائل کو end of file set کرے ہیں یعنی کہ جتنے آپ کے records آپ نے specify کیا کہ command prompt کے اوپر کہ کتنے records آپ اس فائل کے اندر add کرنا جاتے ہیں اور جو ہیڈر کا size ہے وہ سارا calculate کر کے اتنا بڑے size کی فائل بنائے گا اور اس file کو بنانے کے بعد یہ فائل اس کا شروع میں heder ہوگا جتنے آپ نے records specify کیا اور end میں جاکے اس کے end of file وہ place کرہا ہے ابھی just اس نے کیا کیا memory reserve کیا ابھی اس نے کوئی دیتاں یہاں پر place نہیں کیا اب یہاں پہ آپ heder کو read کرنے کے لیے بھی یہاں پہ کچھ logic use کیا گیا کہ آپ heder کو read کر کے دیکھ سکیں کہ جی کتنے records جو ہیں وہ non empty ہیں اور کتنے number of records ہیں اس کے اندر اور وہ آپ display کر سکیں یہ آپ کو prompt ہو رہی ہے یہ آپ کا ایک while کا loop ہے اور اس while loop یہ چلتا رہے گا جب تک کہ آپ اس کو کسی تری کسے exit نہیں کریں گے یہ ہر prompt پر آپ کو یہ message دے رہا ہے read کرنا ہے یا write کرنا ہے یا delete کرنا ہے یا quit کرنا quit کی صورت میں یہ while loop terminate ہو جائے گا یہاں پہ آپ دیکھ سکتے ہیں گر queue انٹر کرتے ہیں تو یہ terminate ہو جائے گا اور یہاں پہ آپ سے یہ مختلف option لے رہا ہے read کے لیے are w کے لیے write اور اس کے according لیے یہ اپنے operations پرفوم کرے گا جو بھی آپ record number سپیسفائے کریں گے یہاں پہ آپ record number بھی سپیسفائے کریں گے read دینے کے بعد کسا record number اگر record number ایسا ہے جو کہ already exist نہیں کرتا تو صورت میں آپ کو یہ ایرر شو کرے گا پھر آپ جو record number read کرنا چاہ رہے ہیں ان کیس ایرر نہیں ہے ان کیس record exist کرتا تو اس record number کو size of record سے multiply کریں گے اس کا address کالکلیٹ کریں گے size file کے اندر اور یہاں پہ آپ کا ov جو overlapped structure اس کے اندر recording لیے اس کا size place کریں گے اور جا ایک file کو read کریں گے اور system time بھی ساتھ آپ نے get کیا اور یہاں پہ record last reference کے اندر آپ نے current time جو ہے وہ place کر دیا تو جس record کو جو ہی read کیا جس time پر read کیا وہ time جو ہے اس record کے اندر جاکے save بھی کر دیا similarly اگر read کی کمانڈ ہے یا delete کی کمانڈ ہے تب یہ والا operation یہاں پہ فرم ہوگا اگر وہ record ابھی تک accessی نہیں ہوا تو وہ کہہ دے گا کہ record is empty اور اس کا جو reference count ہے وہ بھی آپ کو یہاں پہ سپیفائے کر دے گا right کی کی case کے اندر اگر آپ کہتے ہیں کہ جی right کی کمانڈ دیتے ہیں تو اس case کے اندر یہ record کی creation کا time وہ current time وہاں پہ place کر دے گا non empty records کو increment کر دے گا اور header کو بھی change کر دے گا اور جو update time ہے وہ یہاں پہ اس نے current time set کر دیا reference count کو اس نے ایک increment کر دیا اور ایسا سب کچھ کرنے کے بعد یہ ساری information جو ہے اس نے right file سے right کر دی باکی آپ دوسرے errors ہوگا رہا چیک کر رہے اور header کی case میں بھی header کی information بھی header کی اندر بھی change ہو گیا کیونکہ number of records جو ہے وہ increase کر گئے تو وہاں پہ بھی یہ جاکے اس نے change کر دیا تو record کو change کیا اور ساتھ اس نے header کو بھی change کر دیا similarly یہاں پہ آپ دیکھ سکتے ہیں کہ جی header کو read کرنے کے لیے اگر آپ کوئی ایک header specify ہوئے وہاں اس کو آپ نے read کرنا تو یہاں پہ یہ read file کی مدل سے آپ اس کو read کریں گے اور show کریں گے جی اگر empty record ہاں تو بتا دیں گے جی empty record ہے یا non empty record ہے اس طرح کی information display کر دیں گے