70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| compile function mssql_checkdata( Row, ConfigRecID, ConfigRec, ConfigTable )
 | |
| 
 | |
| declare function fieldcount, msg
 | |
| $insert logical
 | |
| 
 | |
| convert '`' to @fm in Row
 | |
| ThisRowID = Row<1>
 | |
| Rcnt = fieldcount( Row, @fm )
 | |
| NewRow = ''
 | |
| for i = 1 to Rcnt
 | |
|    ThisColumn = Row<i>
 | |
|    ColRule = ConfigRec<i>
 | |
|    convert '`' to @fm in ColRule
 | |
|    DataType  = ColRule<1>
 | |
|    DataSpec  = ColRule<2>
 | |
|    DataSpec2 = ColRule<3>
 | |
|    begin case
 | |
|      case DataType = 'V'
 | |
|        if len( ThisColumn ) > DataSpec then
 | |
|           gosub WriteErr
 | |
|           return 1
 | |
|        end
 | |
|      case DataType = 'I'
 | |
|        if index( ThisColumn, '.', 1 ) then
 | |
|           gosub WriteErr
 | |
|           return 1
 | |
|        end else
 | |
|           if num( ThisColumn ) else
 | |
|              gosub WriteErr
 | |
|              return 1
 | |
|           end
 | |
|        end
 | |
|      case DataType = 'DT'
 | |
|        ThisColumn = oconv( ThisColumn, 'D2/' )   
 | |
|      case DataType = 'D'
 | |
|        ThisColumn = oconv( ThisColumn, 'MD':DataSpec2 )
 | |
|        if len(field( ThisColumn, '.', 1 )) > DataSpec then
 | |
|           gosub WriteErr
 | |
|           return 1
 | |
|        end
 | |
|      case DataType = 'T'
 | |
|        if index( ThisColumn, '`', 1 ) then
 | |
|           gosub WriteErr
 | |
|           return 1
 | |
|        end
 | |
|      case DataType = 'C'
 | |
|        if len( ThisColumn ) = DataSpec else
 | |
|           gosub WriteErr
 | |
|           return 1
 | |
|        end
 | |
|    end case
 | |
|    NewRow := ThisColumn:'`'                
 | |
| next i
 | |
| NewRow[-1,1] = ''
 | |
| Row = NewRow
 | |
| return 0
 | |
| *================================================================================================*
 | |
| WriteErr:
 | |
|   ErrorRecID = ConfigRecID:'_ERR'
 | |
|   ErrorLine = fmt( ThisRowId, 'R#15' ):' ':i: ' ':ThisColumn
 | |
|   ErrorRec = xlate( 'CONFIG', ErrorRecID, '', 'X' )
 | |
|   ErrorRec<-1> = ErrorLine
 | |
|   write ErrorRec on ConfigTable, ErrorRecID else
 | |
|      Void = msg( '', 'Error writing ':ErrorRecID:' on CONFIG...' )
 | |
|      return 0
 | |
|   end
 | |
| return
 | |
| *================================================================================================*
 | |
| 
 |