dksadd: PROCEDURE /* zex1206n */ /* Adds records to a delimited key-sequenced UDB */ ON ERROR FLUSH IF &1 = "" THEN DO SAY "Must enter file name as first parameter" FLUSH END /*do*/ ELSE &filename = &1 &id = DKSUDB CALL create_file SHARE &filename,&id CALL open_file SHARE &filename,&id CALL add_records SHARE &filename,&id CALL close_file SHARE &filename,&id EXIT /* ==================== CREATE FILE ==================== */ create_file: PROCEDURE SHARE &filename /* Use FUP to create new key-sequenced file */ SAY "Creating file "&filename INTCMD "OPSYS SEND FUP CREATE "&filename", TYPE K,", "REC 512, KEYLEN 6" DO UNTIL &msgno = NNM0999 INTREAD VARS=(&msgno(7),*,&text) TYPE=ANY PARSE=NO IF POS("ERR 10",&text) > 0 THEN DO /* File exists, so flush NCL process */ SAY "Must enter new file name" FLUSH END /*do*/ END /*do until*/ INTCMD "OPSYS KILL FUP" INTREAD END create_file /* ==================== OPEN FILE ==================== */ open_file: PROCEDURE SHARE &filename,&id /* Open file for NonStop NET/MASTER and NCL */ SAY "Opening "&filename INTCMD "UDBCTL OPEN="&filename" ID="&id INTREAD FILE OPEN ID=&id FORMAT=DELIMITED SELECT &SYS.FILE.RC WHEN 0 THEN SAY "0 Read-only access" WHEN 4 THEN SAY "4 Read and write access" WHEN 8 THEN SAY "8 Read, write, and delete access" WHEN 12 THEN SAY "12 No access" WHEN 16 THEN SAY "16 "&SYSMSG OTHERWISE SAY Unexpected error END /*select*/ END open_file /* ==================== ADD RECORDS ==================== */ add_records: PROCEDURE SHARE &filename,&id /* Gets records from OCS command input line */ /* and adds to file. */ /* Allows you to enter 4 fields for 4 records */ DO &rno = 1 TO 4 DO &fno = 1 TO 4 SAY Enter record &rno field &fno CMDLINE "-GO ID="&SYS.NCLID _ PAUSE VARS=&field&fno PARSE=NO END /*&fno do*/ SAY "Adding record "&rno" to "&filename FILE ADD KEY=&rno VARS=&field* SAY "Key is "&SYS.FILE.KEY SELECT &SYS.FILE.RC WHEN 0 THEN SAY "0 Record added" WHEN 4 THEN SAY "4 Record exists, not added" WHEN 8 THEN SAY "8 Error "&SYS.FILE.ERROR WHEN 16 THEN SAY "16 "&SYSMSG OTHERWISE SAY Unexpected error END /*select*/ END /*&rno do*/ END add_records /* ==================== CLOSE FILE ==================== */ close_file: PROCEDURE SHARE &filename,&id /* Close file from NCL and NonStop NET/MASTER */ SAY "Closing "&filename FILE CLOSE ID=&id SELECT &SYS.FILE.RC WHEN 16 THEN SAY "16 Closed" OTHERWISE SAY Unexpected error END /*select*/ INTCMD "UDBCTL CLOSE="&filename INTREAD END close_file END dksadd