---
title: GsSegment
summary: API reference for GsSegment.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-15
library: SAIF.Framework.Common.Files
reference_type: package
---

# GsSegment

`GsSegment` models the X12 GS functional group header, the envelope segment that opens a functional group of one or more transaction sets within an EDI interchange. It fixes the responsible agency code to `"X"` and formats the batch date/time as `yyyyMMdd`/`HHmm` on output ([BR-040](../../business-rules.md#br-040-gs-header-responsible-agency-code-and-batch-date-time)), pairing with a `GeSegment` trailer to bound the group.

## Purpose
- Represents the GS segment identity via `SegmentId` returning the literal `"GS"` ([BR-020](../../business-rules.md#br-020-first-element-is-the-segment-identifier)).
- Carries `FunctionalCode`, `SenderId`, `ReceiverId`, `BatchDate`, `ControlNumber`, and `VersionControlNumber`, the fields identifying the group's sender/receiver, timing, and content type.
- Fixes GS07 (responsible agency code) to the literal `"X"` on `Build()`, and formats `BatchDate` as `yyyyMMdd`/`HHmm` across elements 4-5 ([BR-040](../../business-rules.md#br-040-gs-header-responsible-agency-code-and-batch-date-time)).
- Reads `VersionControlNumber` back from element 8 on `Fill()`, skipping the fixed agency-code element 7 entirely.

## Context
- Namespace: `SAIF.Common.Files.Edi.Segments`
- Assembly/package: `SAIF.Framework.Common.Files`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| SegmentId | `string SegmentId { get; }` | Returns the literal X12 segment identifier `"GS"`. |
| FunctionalCode | `string FunctionalCode { get; set; }` | The functional identifier code for the group's content type (GS01), element 1. |
| SenderId | `string SenderId { get; set; }` | The application sender's identifier (GS02), element 2. |
| ReceiverId | `string ReceiverId { get; set; }` | The application receiver's identifier (GS03), element 3. |
| BatchDate | `DateTime BatchDate { get; set; }` | The group's creation date/time, formatted as `yyyyMMdd` (element 4) and `HHmm` (element 5) on `Build()` ([BR-040](../../business-rules.md#br-040-gs-header-responsible-agency-code-and-batch-date-time)). |
| ControlNumber | `long ControlNumber { get; set; }` | The group control number (GS06), element 6, matched by the paired `GeSegment.ControlNumber`. |
| VersionControlNumber | `string VersionControlNumber { get; set; }` | The version/release/industry identifier code (GS08), element 8. |
| Build | `IEdiSegment Build()` | Creates a `SegmentBuilder("GS")`, adds `FunctionalCode`, `SenderId`, `ReceiverId`, the split `BatchDate`, `ControlNumber`, the fixed literal `"X"` at element 7, and `VersionControlNumber` at element 8, returning the built segment ([BR-040](../../business-rules.md#br-040-gs-header-responsible-agency-code-and-batch-date-time)). |
| Fill | `void Fill(IEdiSegment segment)` | Reads elements 1-3 via `GetChildValue`, combines elements 4-5 via `DateMaker.MakeDateTime` into `BatchDate`, converts element 6 to `long` for `ControlNumber`, and reads element 8 into `VersionControlNumber` (element 7 is not read back). |
| Parse | `static GsSegment Parse(IEdiSegment segment)` | Instantiates a new `GsSegment`, calls `Fill(segment)` on it, and returns it. |

## Sources
- Common\SAIF.Common.Files\Edi\Segments\GsSegment.cs
