All files / src/abap/2_statements/statements open_dataset.ts

100% Statements 37/37
100% Branches 1/1
100% Functions 1/1
100% Lines 37/37

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 371x 1x 1x 1x 1x 1x 1x 1x 1x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 1x 1x
import {IStatement} from "./_statement";
import {verNot, str, seq, altPrio, per, opt} from "../combi";
import {Target, Source} from "../expressions";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class OpenDataset implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const mode = seq("IN",
                     opt("LEGACY"),
                     altPrio("BINARY MODE", "TEXT MODE"));
 
    const code = seq("CODE PAGE", Source);
 
    const direction = seq("FOR", altPrio("OUTPUT", "INPUT", "UPDATE", "APPENDING"));
    const encoding = seq("ENCODING", altPrio("DEFAULT", "UTF-8", "NON-UNICODE"));
    const pos = seq("AT POSITION", Source);
    const message = seq("MESSAGE", Target);
    const ignoring = str("IGNORING CONVERSION ERRORS");
    const replacement = seq("REPLACEMENT CHARACTER", Source);
    const bom = str("SKIPPING BYTE-ORDER MARK");
    const wbom = str("WITH BYTE-ORDER MARK");
    const type = seq("TYPE", Source);
    const filter = seq("FILTER", Source);
    const linetype = altPrio("SMART", "NATIVE", "UNIX");
    const feed = seq("WITH", linetype, "LINEFEED");
    const windows = str("WITH WINDOWS LINEFEED");
 
    const ret = seq("OPEN DATASET",
                    Source,
                    per(direction, type, mode, wbom, replacement, filter, encoding, pos, message, ignoring, bom, code, feed, windows));
 
    return verNot(Version.Cloud, ret);
  }
 
}