diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
index 876639d..493bd3b 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
@@ -18,6 +18,9 @@
  */
 package org.apache.asterix.external.classad.test;
 
+import java.io.File;
+import java.io.PrintStream;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -36,6 +39,18 @@
 import org.apache.asterix.external.input.stream.LocalFSInputStream;
 import org.apache.asterix.external.library.ClassAdParser;
 import org.apache.asterix.external.util.FileSystemWatcher;
+import org.apache.asterix.formats.nontagged.AqlADMPrinterFactoryProvider;
+import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.commons.io.FileUtils;
+import org.apache.hyracks.algebricks.data.IPrinter;
+import org.apache.hyracks.algebricks.data.IPrinterFactory;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.junit.Assert;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -59,12 +74,74 @@
         return new TestSuite(ClassAdToADMTest.class);
     }
 
+    private void printTuple(ArrayTupleBuilder tb, IPrinter[] printers, PrintStream printStream)
+            throws HyracksDataException {
+        int[] offsets = tb.getFieldEndOffsets();
+        for (int i = 0; i < printers.length; i++) {
+            int offset = i == 0 ? 0 : offsets[i - 1];
+            int length = i == 0 ? offsets[0] : offsets[i] - offsets[i - 1];
+            printers[i].print(tb.getByteArray(), offset, length, printStream);
+            printStream.println();
+        }
+    }
+
+    @SuppressWarnings("rawtypes")
+    public void testSchemaful() {
+        try {
+            File file = new File("target/classad-wtih-temporals.adm");
+            File expected = new File(getClass().getResource("/results/classad-with-temporals.adm").toURI().getPath());
+            FileUtils.deleteQuietly(file);
+            PrintStream printStream = new PrintStream(Files.newOutputStream(Paths.get(file.toURI())));
+            String[] recordFieldNames = { "GlobalJobId", "Owner", "ClusterId", "ProcId", "RemoteWallClockTime",
+                    "CompletionDate", "QDate", "JobCurrentStartDate", "JobStartDate", "JobCurrentStartExecutingDate" };
+            IAType[] recordFieldTypes = { BuiltinType.ASTRING, BuiltinType.ASTRING, BuiltinType.AINT32,
+                    BuiltinType.AINT32, BuiltinType.ADURATION, BuiltinType.ADATETIME, BuiltinType.ADATETIME,
+                    BuiltinType.ADATETIME, BuiltinType.ADATETIME, BuiltinType.ADATETIME };
+            ARecordType recordType = new ARecordType("value", recordFieldNames, recordFieldTypes, true);
+            int numOfTupleFields = 1;
+            ISerializerDeserializer[] serdes = new ISerializerDeserializer[1];
+            serdes[0] = AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(recordType);
+            IPrinterFactory[] printerFactories = new IPrinterFactory[1];
+            printerFactories[0] = AqlADMPrinterFactoryProvider.INSTANCE.getPrinterFactory(recordType);
+            // create output descriptor
+            IPrinter[] printers = new IPrinter[printerFactories.length];
+            for (int i = 0; i < printerFactories.length; i++) {
+                printers[i] = printerFactories[i].createPrinter();
+            }
+            ClassAdObjectPool objectPool = new ClassAdObjectPool();
+            String[] files = new String[] { "/classad-with-temporals.classads" };
+            ClassAdParser parser = new ClassAdParser(recordType, false, false, false, null, null, null, objectPool);
+            ArrayTupleBuilder tb = new ArrayTupleBuilder(numOfTupleFields);
+            for (String path : files) {
+                List<Path> paths = new ArrayList<>();
+                paths.add(Paths.get(getClass().getResource(path).toURI()));
+                FileSystemWatcher watcher = new FileSystemWatcher(paths, null, false);
+                LocalFSInputStream in = new LocalFSInputStream(watcher);
+                SemiStructuredRecordReader recordReader = new SemiStructuredRecordReader(in, "[", "]");
+                while (recordReader.hasNext()) {
+                    tb.reset();
+                    IRawRecord<char[]> record = recordReader.next();
+                    parser.parse(record, tb.getDataOutput());
+                    tb.addFieldEndOffset();
+                    printTuple(tb, printers, printStream);
+                }
+                recordReader.close();
+                printStream.close();
+                Assert.assertTrue(FileUtils.contentEquals(file, expected));
+            }
+        } catch (Throwable th) {
+            System.err.println("TEST FAILED");
+            th.printStackTrace();
+            Assert.assertTrue(false);
+        }
+        System.err.println("TEST PASSED");
+    }
+
     /**
      *
      */
-    public void test() {
+    public void testSchemaless() {
         try {
-            // test here
             ClassAdObjectPool objectPool = new ClassAdObjectPool();
             ClassAd pAd = new ClassAd(objectPool);
             String[] files = new String[] { "/jobads.txt" };
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java b/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
index 5fd6f21..93b31ca 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
@@ -195,12 +195,14 @@
 
             if ((!evaluateExpr || keepBoth) && isExpr && positionBefore >= 0) {
                 // we will store a string representation of the expression
-                int len = lexer.getLexSource().getPosition() - positionBefore;
+                int len = lexer.getLexSource().getPosition() - positionBefore - 2;
                 // add it as it is to the classAd
                 Literal lit = objectPool.literalPool.get();
                 Value exprVal = objectPool.valuePool.get();
-                exprVal.setStringValue(exprPrefix
-                        + String.valueOf(lexer.getLexSource().getBuffer(), positionBefore, len) + exprSuffix);
+
+                exprVal.setStringValue((exprPrefix == null ? "" : exprPrefix)
+                        + String.valueOf(lexer.getLexSource().getBuffer(), positionBefore, len)
+                        + (exprSuffix == null ? "" : exprSuffix));
                 Literal.createLiteral(lit, exprVal, NumberFactor.NO_FACTOR);
                 if (!evaluateExpr) {
                     ad.insert(tv.getStrValue().toString(), lit);
@@ -318,9 +320,6 @@
                     throw new HyracksDataException("This record is closed, you can not add extra fields !!");
                 } else if (fieldId < 0 && recType.isOpen()) {
                     aStringFieldName.setValue(fldName);
-                    if (aStringFieldName.getStringValue().contains("org.apache.asterix.external.classad.TokenValue")) {
-                        System.err.println("we have a problem");
-                    }
                     stringSerde.serialize(aStringFieldName, fieldNameBuffer.getDataOutput());
                     openRecordField = true;
                     fieldType = null;
@@ -362,7 +361,6 @@
         recBuilder.write(out, true);
     }
 
-    // The only method left
     private void writeFieldValueToBuffer(IAType fieldType, DataOutput out, String name, ExprTree tree, ClassAd pAd)
             throws IOException, AsterixException {
         Value val;
@@ -375,7 +373,6 @@
             case OP_NODE:
                 val = objectPool.valuePool.get();
                 if (pAd.evaluateAttr(name, val)) {
-
                 } else {
                     // just write the expr
                     val = ((Literal) pAd.getAttrList().get(name + "Expr")).getValue();
@@ -423,8 +420,36 @@
                 break;
             case INTEGER_VALUE:
                 if (checkType(ATypeTag.INT64, fieldType)) {
-                    aInt64.setValue(val.getLongVal());
-                    int64Serde.serialize(aInt64, out);
+                    if (fieldType == null || fieldType.getTypeTag() == ATypeTag.INT64) {
+                        aInt64.setValue(val.getLongVal());
+                        int64Serde.serialize(aInt64, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT32) {
+                        aInt32.setValue((int) val.getLongVal());
+                        int32Serde.serialize(aInt32, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.DOUBLE) {
+                        aDouble.setValue(val.getLongVal());
+                        doubleSerde.serialize(aDouble, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT16) {
+                        aInt16.setValue((short) val.getLongVal());
+                        int16Serde.serialize(aInt16, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT8) {
+                        aInt8.setValue((byte) val.getLongVal());
+                        int8Serde.serialize(aInt8, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.FLOAT) {
+                        aFloat.setValue(val.getLongVal());
+                        floatSerde.serialize(aFloat, out);
+                    }
+                } else if (checkType(ATypeTag.DATETIME, fieldType)) {
+                    // Classad uses Linux Timestamps (s instead of ms)
+                    aDateTime.setValue(val.getLongVal() * 1000);
+                    datetimeSerde.serialize(aDateTime, out);
+                } else if (checkType(ATypeTag.DURATION, fieldType)) {
+                    // Classad uses Linux Timestamps (s instead of ms)
+                    aDuration.setValue(0, val.getLongVal() * 1000);
+                    durationSerde.serialize(aDuration, out);
+                } else if (checkType(ATypeTag.INT32, fieldType)) {
+                    aInt32.setValue((int) val.getLongVal());
+                    int32Serde.serialize(aInt32, out);
                 } else if (checkType(ATypeTag.DOUBLE, fieldType)) {
                     aDouble.setValue(val.getLongVal());
                     doubleSerde.serialize(aDouble, out);
@@ -447,14 +472,39 @@
                 break;
             case REAL_VALUE:
                 if (checkType(ATypeTag.DOUBLE, fieldType)) {
-                    aDouble.setValue(val.getDoubleVal());
-                    doubleSerde.serialize(aDouble, out);
+                    if (fieldType == null || fieldType.getTypeTag() == ATypeTag.DOUBLE) {
+                        aDouble.setValue(val.getDoubleVal());
+                        doubleSerde.serialize(aDouble, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT32) {
+                        aInt32.setValue((int) val.getDoubleVal());
+                        int32Serde.serialize(aInt32, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT64) {
+                        aInt64.setValue((long) val.getDoubleVal());
+                        int64Serde.serialize(aInt64, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT16) {
+                        aInt16.setValue((short) val.getDoubleVal());
+                        int16Serde.serialize(aInt16, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.INT8) {
+                        aInt8.setValue((byte) val.getDoubleVal());
+                        int8Serde.serialize(aInt8, out);
+                    } else if (fieldType.getTypeTag() == ATypeTag.FLOAT) {
+                        aFloat.setValue((float) val.getDoubleVal());
+                        floatSerde.serialize(aFloat, out);
+                    }
                 } else if (checkType(ATypeTag.INT32, fieldType)) {
                     aInt32.setValue((int) val.getDoubleVal());
                     int32Serde.serialize(aInt32, out);
                 } else if (checkType(ATypeTag.INT64, fieldType)) {
                     aInt64.setValue((long) val.getDoubleVal());
                     int64Serde.serialize(aInt64, out);
+                } else if (checkType(ATypeTag.DATETIME, fieldType)) {
+                    // Classad uses Linux Timestamps (s instead of ms)
+                    aDateTime.setValue(val.getLongVal() * 1000);
+                    datetimeSerde.serialize(aDateTime, out);
+                } else if (checkType(ATypeTag.DURATION, fieldType)) {
+                    // Classad uses Linux Timestamps (s instead of ms)
+                    aDuration.setValue(0, (long) (val.getDoubleVal() * 1000.0));
+                    durationSerde.serialize(aDuration, out);
                 } else {
                     throw new HyracksDataException(mismatchErrorMessage + fieldType.getTypeTag());
                 }
diff --git a/asterix-external-data/src/test/resources/classad-with-temporals.classads b/asterix-external-data/src/test/resources/classad-with-temporals.classads
new file mode 100644
index 0000000..e20be09
--- /dev/null
+++ b/asterix-external-data/src/test/resources/classad-with-temporals.classads
@@ -0,0 +1,134 @@
+
+    [
+        Schedd = "submit-5.chtc.wisc.edu";
+        BlockWrites = 3;
+        LastJobStatus = 2;
+        JobCurrentStartExecutingDate = 1459300924;
+        WantRemoteIO = true;
+        RequestCpus = 1;
+        NumShadowStarts = 1;
+        RemoteUserCpu = 6.607100000000000E+04;
+        NiceUser = false;
+        BytesRecvd = 7.292000000000000E+03;
+        RequestMemory = 12288;
+        ResidentSetSize = 750000;
+        StreamOut = false;
+        SpooledOutputFiles = "job697_results.tar.gz";
+        Arguments = "";
+        OnExitRemove = true;
+        ImageSize_RAW = 607024;
+        RemoteWallClockTime = 6.629100000000000E+04;
+        MachineAttrSlotWeight0 = 1;
+        ExecutableSize = 4;
+        JobStatus = 4;
+        DAGParentNodeNames = "";
+        ExitCode = 0;
+        DAGManNodesMask = "0,1,2,4,5,7,9,10,11,12,13,16,17,24,27";
+        BytesSent = 8.580547200000000E+07;
+        LastRejMatchReason = "no match found ";
+        LastSuspensionTime = 0;
+        ExecutableSize_RAW = 4;
+        RecentBlockReadKbytes = 0;
+        TransferInputSizeMB = 0;
+        BlockReadKbytes = 0;
+        LocalSysCpu = 0.0;
+        Iwd = "/home/grandaduarte/mars/mhb1";
+        Cmd = "/home/grandaduarte/mars/mhb1/job697.sh";
+        CommittedSuspensionTime = 0;
+        RecentStatsLifetimeStarter = 1200;
+        TargetType = "Machine";
+        WhenToTransferOutput = "ON_EXIT";
+        BufferSize = 524288;
+        JobCurrentStartTransferOutputDate = 1459367212;
+        RecentBlockWrites = 0;
+        CompletionDate = 1459367213;
+        LastMatchTime = 1459300922;
+        LastJobLeaseRenewal = 1459367213;
+        DAGManNodesLog = "/home/grandaduarte/mars/mhb1/./dagman.dag.nodes.log";
+        ClusterId = 16798777;
+        JobUniverse = 5;
+        NumJobStarts = 1;
+        ProcId = 0;
+        PeriodicHold = false;
+        CondorPlatform = "$CondorPlatform: x86_64_RedHat6 $";
+        JobFinishedHookDone = 1459367213;
+        In = "/dev/null";
+        DiskUsage = 7500000;
+        EncryptExecuteDirectory = false;
+        User = "grandaduarte@chtc.wisc.edu";
+        LeaveJobInQueue = false;
+        Requirements = ( MY.JobUniverse == 12 || MY.JobUniverse == 7 || ( ( MY.WantFlocking || MY.WantGlidein || TARGET.PoolName == "CHTC" ) && ( TARGET.OpSysMajorVer == MY.LinuxVer || TARGET.OpSysMajorVer == MY.LinuxVerAlt || TARGET.OpSysMajorVer == MY.WinVer ) ) ) && ( TARGET.Arch == "X86_64" ) && ( TARGET.OpSys == "LINUX" ) && ( TARGET.Disk >= RequestDisk ) && ( TARGET.Memory >= RequestMemory ) && ( TARGET.HasFileTransfer );
+        MinHosts = 1;
+        MaxHosts = 1;
+        StartdPrincipal = "execute-side@matchsession/128.105.245.175";
+        JOBGLIDEIN_ResourceName = "$$([IfThenElse(IsUndefined(TARGET.GLIDEIN_ResourceName), IfThenElse(IsUndefined(TARGET.GLIDEIN_Site), \"wisc.edu\", TARGET.GLIDEIN_Site), TARGET.GLIDEIN_ResourceName)])";
+        EnteredCurrentStatus = 1459367213;
+        JobLeaseDuration = 2400;
+        QDate = 1459298672;
+        AccountingGroup = EngrPhysics_Wilson;
+        MemoryUsage = ( ( ResidentSetSize + 1023 ) / 1024 );
+        TerminationPending = true;
+        NumRestarts = 0;
+        NumSystemHolds = 0;
+        Environment = "";
+        LinuxVer = 6;
+        DAGNodeName = "_mars_MH1B1_661.inp";
+        CoreSize = 0;
+        OnExitHold = false;
+        CondorVersion = "$CondorVersion: 8.5.3 Mar 14 2016 BuildID: 358989 $";
+        UserLog = "/home/grandaduarte/mars/mhb1/job697.log";
+        JobCurrentStartDate = 1459300922;
+        MATCH_EXP_JOBGLIDEIN_ResourceName = "wisc.edu";
+        BufferBlockSize = 32768;
+        BlockWriteKbytes = 24;
+        ExitBySignal = false;
+        DAGManJobId = 16795779;
+        MachineAttrCpus0 = 1;
+        WantRemoteSyscalls = false;
+        CumulativeSuspensionTime = 0;
+        MyType = "Job";
+        Rank = 0.0;
+        JobNotification = 0;
+        Owner = "grandaduarte";
+        LinuxVerAlt = 6;
+        Err = "job697.err";
+        PeriodicRemove = false;
+        CommittedTime = 66291;
+        RecentBlockWriteKbytes = 0;
+        TransferIn = false;
+        ExitStatus = 0;
+        ShouldTransferFiles = "YES";
+        IsCHTCSubmit = true;
+        NumJobMatches = 1;
+        RootDir = "/";
+        JobStartDate = 1459300922;
+        JobPrio = 0;
+        CurrentHosts = 0;
+        GlobalJobId = "submit-5.chtc.wisc.edu#16798777.0#1459298672";
+        RemoteSysCpu = 6.100000000000000E+01;
+        LastRejMatchTime = 1459300921;
+        TotalSuspensions = 0;
+        CommittedSlotTime = 6.629100000000000E+04;
+        WantCheckpoint = false;
+        BlockReads = 0;
+        LastRemoteHost = "slot1_7@e375.chtc.wisc.edu";
+        TransferInput = "job697.sh";
+        LocalUserCpu = 0.0;
+        PeriodicRelease = false;
+        WinVer = 601;
+        LastPublicClaimId = "<128.105.245.175:9618>#1457031418#19008#...";
+        NumCkpts_RAW = 0;
+        Out = "job697.out";
+        SubmitEventNotes = "DAG Node: _mars_MH1B1_661.inp";
+        CumulativeSlotTime = 6.629100000000000E+04;
+        JobRunCount = 1;
+        RecentBlockReads = 0;
+        StreamErr = false;
+        DiskUsage_RAW = 6625678;
+        RequestDisk = 20971520;
+        ResidentSetSize_RAW = 597536;
+        OrigMaxHosts = 1;
+        NumCkpts = 0;
+        StatsLifetimeStarter = 66289;
+        ImageSize = 750000
+    ]
\ No newline at end of file
diff --git a/asterix-external-data/src/test/resources/results/classad-with-temporals.adm b/asterix-external-data/src/test/resources/results/classad-with-temporals.adm
new file mode 100644
index 0000000..3cd630b
--- /dev/null
+++ b/asterix-external-data/src/test/resources/results/classad-with-temporals.adm
@@ -0,0 +1 @@
+{ "GlobalJobId": "submit-5.chtc.wisc.edu#16798777.0#1459298672", "Owner": "grandaduarte", "ClusterId": 16798777i32, "ProcId": 0i32, "RemoteWallClockTime": duration("PT18H24M51S"), "CompletionDate": datetime("2016-03-30T19:46:53.000Z"), "QDate": datetime("2016-03-30T00:44:32.000Z"), "JobCurrentStartDate": datetime("2016-03-30T01:22:02.000Z"), "JobStartDate": datetime("2016-03-30T01:22:02.000Z"), "JobCurrentStartExecutingDate": datetime("2016-03-30T01:22:04.000Z"), "StatsLifetimeStarter": 66289, "SubmitEventNotes": "DAG Node: _mars_MH1B1_661.inp", "JobStatus": 4, "LeaveJobInQueue": false, "StartdPrincipal": "execute-side@matchsession/128.105.245.175", "OnExitRemove": true, "CoreSize": 0, "MATCH_EXP_JOBGLIDEIN_ResourceName": "wisc.edu", "Rank": 0.0d, "ExitStatus": 0, "ResidentSetSize": 750000, "WantCheckpoint": false, "In": "/dev/null", "MaxHosts": 1, "RootDir": "/", "NumRestarts": 0, "RecentBlockWriteKbytes": 0, "DiskUsage_RAW": 6625678, "EnteredCurrentStatus": 1459367213, "ResidentSetSize_RAW": 597536, "RequestDisk": 20971520, "MyType": "Job", "PeriodicRemove": false, "Cmd": "/home/grandaduarte/mars/mhb1/job697.sh", "CondorVersion": "$CondorVersion: 8.5.3 Mar 14 2016 BuildID: 358989 $", "ShouldTransferFiles": "YES", "TargetType": "Machine", "MinHosts": 1, "NumCkpts_RAW": 0, "RequestCpus": 1, "WinVer": 601, "RemoteUserCpu": 66071.0d, "BlockWrites": 3, "NiceUser": false, "Out": "job697.out", "ImageSize_RAW": 607024, "BytesSent": 8.5805472E7d, "CumulativeSuspensionTime": 0, "TransferIn": false, "NumCkpts": 0, "Err": "job697.err", "RecentBlockWrites": 0, "JobFinishedHookDone": 1459367213, "ImageSize": 750000, "Schedd": "submit-5.chtc.wisc.edu", "JobUniverse": 5, "EncryptExecuteDirectory": false, "TransferInputSizeMB": 0, "RecentBlockReads": 0, "SpooledOutputFiles": "job697_results.tar.gz", "BlockWriteKbytes": 24, "WhenToTransferOutput": "ON_EXIT", "ExitBySignal": false, "LastMatchTime": 1459300922, "OnExitHold": false, "OrigMaxHosts": 1, "RequestMemory": 12288, "NumJobStarts": 1, "TerminationPending": true, "TotalSuspensions": 0, "BlockReads": 0, "DAGManJobId": 16795779, "MemoryUsage": "( ( ResidentSetSize + 1023 ) / 1024 )", "ExitCode": 0, "JobNotification": 0, "BlockReadKbytes": 0, "AccountingGroup": "EngrPhysics_Wilson", "NumJobMatches": 1, "LocalUserCpu": 0.0d, "LastJobStatus": 2, "BufferBlockSize": 32768, "CommittedTime": 66291, "ExecutableSize_RAW": 4, "LastRejMatchReason": "no match found ", "LastSuspensionTime": 0, "UserLog": "/home/grandaduarte/mars/mhb1/job697.log", "DAGManNodesMask": "0,1,2,4,5,7,9,10,11,12,13,16,17,24,27", "CumulativeSlotTime": 66291.0d, "LastJobLeaseRenewal": 1459367213, "MachineAttrSlotWeight0": 1, "NumSystemHolds": 0, "BytesRecvd": 7292.0d, "CondorPlatform": "$CondorPlatform: x86_64_RedHat6 $", "JOBGLIDEIN_ResourceName": "$$([IfThenElse(IsUndefined(TARGET.GLIDEIN_ResourceName), IfThenElse(IsUndefined(TARGET.GLIDEIN_Site), \"wisc.edu\", TARGET.GLIDEIN_Site), TARGET.GLIDEIN_ResourceName)])", "DAGNodeName": "_mars_MH1B1_661.inp", "PeriodicRelease": false, "JobRunCount": 1, "LastRemoteHost": "slot1_7@e375.chtc.wisc.edu", "JobPrio": 0, "LocalSysCpu": 0.0d, "ExecutableSize": 4, "RemoteSysCpu": 61.0d, "TransferInput": "job697.sh", "PeriodicHold": false, "WantRemoteIO": true, "CommittedSuspensionTime": 0, "DAGParentNodeNames": "", "StreamErr": false, "RecentBlockReadKbytes": 0, "WantRemoteSyscalls": false, "NumShadowStarts": 1, "MachineAttrCpus0": 1, "DAGManNodesLog": "/home/grandaduarte/mars/mhb1/./dagman.dag.nodes.log", "Requirements": "( MY.JobUniverse == 12 || MY.JobUniverse == 7 || ( ( MY.WantFlocking || MY.WantGlidein || TARGET.PoolName == \"CHTC\" ) && ( TARGET.OpSysMajorVer == MY.LinuxVer || TARGET.OpSysMajorVer == MY.LinuxVerAlt || TARGET.OpSysMajorVer == MY.WinVer ) ) ) && ( TARGET.Arch == \"X86_64\" ) && ( TARGET.OpSys == \"LINUX\" ) && ( TARGET.Disk >= RequestDisk ) && ( TARGET.Memory >= RequestMemory ) && ( TARGET.HasFileTransfer )", "LinuxVerAlt": 6, "DiskUsage": 7500000, "LinuxVer": 6, "LastRejMatchTime": 1459300921, "JobLeaseDuration": 2400, "BufferSize": 524288, "IsCHTCSubmit": true, "JobCurrentStartTransferOutputDate": 1459367212, "RecentStatsLifetimeStarter": 1200, "CommittedSlotTime": 66291.0d, "Environment": "", "LastPublicClaimId": "<128.105.245.175:9618>#1457031418#19008#...", "Iwd": "/home/grandaduarte/mars/mhb1", "CurrentHosts": 0, "Arguments": "", "User": "grandaduarte@chtc.wisc.edu", "StreamOut": false }
