use super::*;
use f2rust_std::*;
const FTSIZE: i32 = 5000;
const NWD: i32 = 128;
const NWI: i32 = 256;
const NWC: i32 = 1024;
const CHARDT: i32 = 1;
const DPDT: i32 = 2;
const INTDT: i32 = 3;
const FILSIZ: i32 = 255;
struct SaveVars {
INTBFF: i32,
NATBFF: i32,
FIRST: bool,
}
impl SaveInit for SaveVars {
fn new() -> Self {
let mut INTBFF: i32 = 0;
let mut NATBFF: i32 = 0;
let mut FIRST: bool = false;
FIRST = true;
Self {
INTBFF,
NATBFF,
FIRST,
}
}
}
pub fn ZZDASGRD(
HANDLE: i32,
RECNO: i32,
RECORD: &mut [f64],
ctx: &mut Context,
) -> f2rust_std::Result<()> {
let save = ctx.get_vars::<SaveVars>();
let save = &mut *save.borrow_mut();
let mut RECORD = DummyArrayMut::new(RECORD, 1..=NWD);
let mut CHRREC = [b' '; NWC as usize];
let mut FNAME = [b' '; FILSIZ as usize];
let mut INTAMH: i32 = 0;
let mut INTARC: i32 = 0;
let mut IOSTAT: i32 = 0;
let mut UNIT: i32 = 0;
let mut FOUND: bool = false;
if RETURN(ctx) {
return Ok(());
}
CHKIN(b"ZZDASGRD", ctx)?;
if save.FIRST {
ZZDDHNFC(&mut save.NATBFF, ctx)?;
if FAILED(ctx) {
CHKOUT(b"ZZDASGRD", ctx)?;
return Ok(());
}
save.FIRST = false;
}
ZZDDHHLU(HANDLE, b"DAS", false, &mut UNIT, ctx)?;
ZZDDHNFO(
HANDLE,
&mut FNAME,
&mut INTARC,
&mut save.INTBFF,
&mut INTAMH,
&mut FOUND,
ctx,
)?;
if FAILED(ctx) {
CHKOUT(b"ZZDASGRD", ctx)?;
return Ok(());
}
if !FOUND {
SETMSG(b"Unable to locate file associated with HANDLE, #. The most likely cause of this is the file that you are trying to read has been closed.", ctx);
ERRINT(b"#", HANDLE, ctx);
SIGERR(b"SPICE(HANDLENOTFOUND)", ctx)?;
CHKOUT(b"ZZDASGRD", ctx)?;
return Ok(());
}
if (save.INTBFF == save.NATBFF) {
{
use f2rust_std::{
data::Val,
io::{self, Reader},
};
let mut reader = io::UnformattedReader::new(ctx.io_unit(UNIT)?, Some(RECNO))?;
IOSTAT = io::capture_iostat(|| {
reader.start()?;
for n in RECORD.iter_mut() {
*n = reader.read_f64()?;
}
reader.finish()?;
Ok(())
})?;
}
if (IOSTAT != 0) {
SETMSG(
b"Could not read DAS d.p. record. File = # Record number = #. IOSTAT = #.",
ctx,
);
ERRFNM(b"#", UNIT, ctx)?;
ERRINT(b"#", RECNO, ctx);
ERRINT(b"#", IOSTAT, ctx);
SIGERR(b"SPICE(DASFILEREADFAILED)", ctx)?;
CHKOUT(b"ZZDASGRD", ctx)?;
return Ok(());
}
} else {
{
use f2rust_std::{
data::Val,
io::{self, Reader},
};
let mut reader = io::UnformattedReader::new(ctx.io_unit(UNIT)?, Some(RECNO))?;
IOSTAT = io::capture_iostat(|| {
reader.start()?;
reader.read_str(&mut CHRREC)?;
reader.finish()?;
Ok(())
})?;
}
if (IOSTAT != 0) {
SETMSG(b"Could not read non-native DAS d.p. record into character array. File = # Record number = #. IOSTAT = #.", ctx);
ERRFNM(b"#", UNIT, ctx)?;
ERRINT(b"#", RECNO, ctx);
ERRINT(b"#", IOSTAT, ctx);
SIGERR(b"SPICE(DASFILEREADFAILED)", ctx)?;
CHKOUT(b"ZZDASGRD", ctx)?;
return Ok(());
}
ZZXLATED(save.INTBFF, &CHRREC, NWD, RECORD.as_slice_mut(), ctx)?;
}
CHKOUT(b"ZZDASGRD", ctx)?;
Ok(())
}