C/400

13. レコード単位の更新

レコード単位での更新は _Ropen のときに rr+ blkrcd=Y でオープンしておき、
_Rupdate(fp, record, 21); によってレコード単位で更新できる。( 21=レコード長)
下記に例を示す。

0001.00 #include <stdio.h>
0002.00 #include <stdlib.h>
0003.00 #include <string.h>
0004.00 #include <recio.h>
0005.00                                                           
0006.00 #define TRUE         0                                    
0007.00 #define FALSE       -1                                    
0008.00 #define MAX_LEN 3000                                      
0009.00                                                           
0010.00 void main(void){                                          
0011.00     _RFILE *fp;                                           
0012.00    _RIOFB_T *iofb;                                        
0013.00     char record[256];                                     
0014.00                                                           
0015.00     fp = _Ropen("QTRFIL/SHOHIN", "rr+ blkrcd=Y");         
0016.00      if(fp == NULL){                                      
0017.00          printf("Open failed for open file\n");getchar(); 
0018.00      }                                                    
0019.00     while(1){                                             
0020.00       iofb = _Rreadn(fp, record, MAX_LEN, __DFT);         
0021.00       if(iofb->num_bytes == EOF) break;       
0022.00       _Rupdate(fp, record, 21);               
0023.00       printf("Update record = %s\n", record); 
0024.00     }                                         
0025.00    _Rclose(fp);                               
0026.00     getchar();                                
0027.00 }